From bfc50e6cfdc74c7f867e19ddbca03133c4610f98 Mon Sep 17 00:00:00 2001
From: Tomas Stupka <tomas.stupka@oracle.com>
Date: Fri, 27 Jan 2017 18:55:15 +0100
Subject: [PATCH] fixed NPE in Parse.createSource()

---
 .../com/oracle/truffle/r/nodes/builtin/base/Parse.java   | 3 ++-
 .../truffle/r/test/builtins/TestBuiltin_parse.java       | 9 ++++++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Parse.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Parse.java
index 4a39e00580..fbb66b60b7 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Parse.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Parse.java
@@ -174,7 +174,8 @@ public abstract class Parse extends RBuiltinNode {
     private static Source createSource(Object srcFile, String coalescedLines) {
         if (srcFile instanceof REnvironment) {
             REnvironment srcFileEnv = (REnvironment) srcFile;
-            boolean isFile = RRuntime.fromLogical((byte) srcFileEnv.get("isFile"));
+            Object b = srcFileEnv.get("isFile");
+            boolean isFile = RRuntime.fromLogical(b != null ? (byte) b : 0);
             if (isFile) {
                 // Might be a URL
                 String urlFileName = RRuntime.asString(srcFileEnv.get("filename"));
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_parse.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_parse.java
index 748403bf04..fa4d7c9cce 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_parse.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_parse.java
@@ -4,7 +4,7 @@
  * http://www.gnu.org/licenses/gpl-2.0.html
  *
  * Copyright (c) 2012-2014, Purdue University
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates
  *
  * All rights reserved.
  */
@@ -13,6 +13,7 @@ package com.oracle.truffle.r.test.builtins;
 import org.junit.Test;
 
 import com.oracle.truffle.r.test.TestBase;
+import java.io.IOException;
 
 // Checkstyle: stop line length check
 
@@ -57,4 +58,10 @@ public class TestBuiltin_parse extends TestBase {
     public void testArgumentsCasts() {
         assertEval(".Internal(parse(stdin(), c(1,2), c('expr1', 'expr2'), '?', '<weird-text', 'unknown'))");
     }
+
+    @Test
+    public void testSrcfile() throws IOException {
+        assertEval("parse(text='', srcfile=srcfile(system.file('testfile')))");
+    }
+
 }
-- 
GitLab