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 8c7b35626d0a55c423737f508686f5f2abe4f34c..80f8c14c4dce9dea033f22e7a5a348821fbb437d 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 9558fb6b46e8ef44293d84233dda7282676bfdf4..8a7ced3aa7eeee197ff111e5f729ac8a693e0701 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) }"); } }