From 6757224cf64140908617f058f7616700dc047173 Mon Sep 17 00:00:00 2001
From: Lukas Stadler <lukas.stadler@oracle.com>
Date: Thu, 21 Dec 2017 09:24:31 +0100
Subject: [PATCH] don't skip arguments in RScriptCommand

---
 .../truffle/r/launcher/RscriptCommand.java    | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/com.oracle.truffle.r.launcher/src/com/oracle/truffle/r/launcher/RscriptCommand.java b/com.oracle.truffle.r.launcher/src/com/oracle/truffle/r/launcher/RscriptCommand.java
index 6710cdd0e7..9fffb1b9ef 100644
--- a/com.oracle.truffle.r.launcher/src/com/oracle/truffle/r/launcher/RscriptCommand.java
+++ b/com.oracle.truffle.r.launcher/src/com/oracle/truffle/r/launcher/RscriptCommand.java
@@ -27,6 +27,7 @@ import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Map;
 
 import org.graalvm.options.OptionCategory;
@@ -116,13 +117,17 @@ public class RscriptCommand {
         };
         boolean useJVM = false;
         Map<String, String> polyglotOptions = new HashMap<>();
-        for (int i = 1; i < argsList.size(); i++) {
-            String arg = argsList.get(i);
-            if ("--jvm".equals(arg)) {
-                useJVM = true;
-                argsList.remove(i);
-            } else if (launcher.parsePolyglotOption("R", polyglotOptions, arg)) {
-                argsList.remove(i);
+        Iterator<String> iterator = argsList.iterator();
+        if (iterator.hasNext()) {
+            iterator.next(); // skip first argument
+            while (iterator.hasNext()) {
+                String arg = iterator.next();
+                if ("--jvm".equals(arg)) {
+                    useJVM = true;
+                    iterator.remove();
+                } else if (launcher.parsePolyglotOption("R", polyglotOptions, arg)) {
+                    iterator.remove();
+                }
             }
         }
         if (launcher.runPolyglotAction()) {
-- 
GitLab