From dfca6c69026bc59caaa3fa1b057d46a99295f0d7 Mon Sep 17 00:00:00 2001
From: Mick Jordan <mick.jordan@oracle.com>
Date: Fri, 3 Jun 2016 16:57:29 -0700
Subject: [PATCH] fix regexpr/gregexpr bug then fixed=FALSE

---
 .../oracle/truffle/r/nodes/builtin/base/GrepFunctions.java | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

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 c8c6f1c527..8c7b35626d 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
@@ -574,6 +574,7 @@ public class GrepFunctions {
             for (int i = 0; i < vector.getLength(); i++) {
                 result[i] = findIndex(pattern, vector.getDataAt(i), ignoreCase, fixedL == RRuntime.LOGICAL_TRUE).get(0);
             }
+            // TODO attribute as per spec
             return RDataFactory.createIntVector(result, RDataFactory.COMPLETE_VECTOR);
         }
 
@@ -614,13 +615,15 @@ public class GrepFunctions {
         @TruffleBoundary
         @Override
         protected Object regexp(RAbstractStringVector patternArg, RAbstractStringVector vector, byte ignoreCaseL, byte perlL, byte fixedL, byte useBytesL) {
-            checkExtraArgs(RRuntime.LOGICAL_FALSE, perlL, fixedL, useBytesL, RRuntime.LOGICAL_FALSE);
+            checkExtraArgs(RRuntime.LOGICAL_FALSE, perlL, RRuntime.LOGICAL_FALSE, useBytesL, RRuntime.LOGICAL_FALSE);
             boolean ignoreCase = RRuntime.fromLogical(ignoreCaseL);
             String pattern = RegExp.checkPreDefinedClasses(patternArg.getDataAt(0));
+            boolean fixed = RRuntime.fromLogical(fixedL);
             Object[] result = new Object[vector.getLength()];
             for (int i = 0; i < vector.getLength(); i++) {
-                int[] data = toIntArray(findIndex(pattern, vector.getDataAt(i), ignoreCase, true));
+                int[] data = toIntArray(findIndex(pattern, vector.getDataAt(i), ignoreCase, fixed));
                 result[i] = RDataFactory.createIntVector(data, RDataFactory.COMPLETE_VECTOR);
+                // TODO attributes as per spec
             }
             return RDataFactory.createList(result);
         }
-- 
GitLab