From 2f2bacb6367a7041c1f11169c37676e00f4dd122 Mon Sep 17 00:00:00 2001
From: Adam Welc <adam.welc@oracle.com>
Date: Mon, 11 Jul 2016 12:36:24 -0700
Subject: [PATCH] Fixed a problem with strsplit function.

---
 .../oracle/truffle/r/nodes/builtin/base/GrepFunctions.java | 7 +++++++
 .../truffle/r/test/builtins/TestBuiltin_strsplit.java      | 4 ++++
 2 files changed, 11 insertions(+)

diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java
index 8c7b35626d..80f8c14c4d 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java
@@ -809,6 +809,13 @@ public class GrepFunctions {
                         } else {
                             resultItem = splitIntl(data, currentSplit);
                         }
+                        if (resultItem.getLength() == 0) {
+                            if (fixed) {
+                                resultItem = RDataFactory.createStringVector(data);
+                            } else {
+                                resultItem = RDataFactory.createStringVector(data.length());
+                            }
+                        }
                     }
                     result[i] = resultItem;
                 }
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_strsplit.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_strsplit.java
index 9558fb6b46..8a7ced3aa7 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_strsplit.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_strsplit.java
@@ -110,5 +110,9 @@ public class TestBuiltin_strsplit extends TestBase {
         assertEval("{ strsplit( c(\"helloh\", \"hi\"), c(\"h\",\"\")) }");
         assertEval("{ strsplit(\"ahoj\", split=\"\") [[c(1,2)]] }");
         assertEval("{ strsplit(\"a,h,o,j\", split=\",\") }");
+        assertEval("{ strsplit(\"abc\", \".\", fixed = TRUE, perl=FALSE) }");
+        assertEval("{ strsplit(\"abc\", \".\", fixed = TRUE, perl=TRUE) }");
+        assertEval("{ strsplit(\"abc\", \".\", fixed = FALSE, perl=FALSE) }");
+        assertEval("{ strsplit(\"abc\", \".\", fixed = FALSE, perl=TRUE) }");
     }
 }
-- 
GitLab