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 6710cdd0e79c1046d05bf36659d86793ac6c98ff..9fffb1b9ef4cd8f8094bf2337c6bebe711b02584 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()) {