From dbd886d11c94917decf2c841313399f8b60890ea Mon Sep 17 00:00:00 2001
From: Florian Angerer <florian.angerer@oracle.com>
Date: Thu, 4 May 2017 11:53:34 +0200
Subject: [PATCH] Fixed bug in message resolution of RList: Did return Java
 null which is not allowed.

---
 .../src/com/oracle/truffle/r/engine/interop/RListMR.java   | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RListMR.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RListMR.java
index 13c996f9c4..f75ff54701 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RListMR.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RListMR.java
@@ -41,6 +41,7 @@ import com.oracle.truffle.r.runtime.context.RContext;
 import com.oracle.truffle.r.runtime.context.RContext.RCloseable;
 import com.oracle.truffle.r.runtime.data.RFunction;
 import com.oracle.truffle.r.runtime.data.RList;
+import com.oracle.truffle.r.runtime.data.RNull;
 import com.oracle.truffle.r.runtime.data.RStringVector;
 
 @MessageResolution(receiverType = RList.class, language = TruffleRLanguage.class)
@@ -75,7 +76,8 @@ public class RListMR {
         @SuppressWarnings("try")
         protected Object access(VirtualFrame frame, RList receiver, String field) {
             try (RCloseable c = RContext.withinContext(TruffleRLanguage.INSTANCE.actuallyFindContext0(findContext))) {
-                return extract.applyAccessField(frame, receiver, field);
+                Object applyAccessField = extract.applyAccessField(frame, receiver, field);
+                return applyAccessField;
             }
         }
     }
@@ -103,7 +105,8 @@ public class RListMR {
         @SuppressWarnings("try")
         protected Object access(RList receiver) {
             try (RCloseable c = RContext.withinContext(TruffleRLanguage.INSTANCE.actuallyFindContext0(findContext))) {
-                return getNamesNode.getNames(receiver);
+                RStringVector names = getNamesNode.getNames(receiver);
+                return names != null ? names : RNull.instance;
             }
         }
     }
-- 
GitLab