From 84398bd0737eaad16472e0c5fa1d4dd89d992097 Mon Sep 17 00:00:00 2001
From: Mick Jordan <mick.jordan@oracle.com>
Date: Mon, 4 Jan 2016 11:31:18 -0800
Subject: [PATCH] fix string index error on parse error

---
 .../src/com/oracle/truffle/r/engine/REngine.java                | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java
index 649f4d84aa..7ce8e04cec 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java
@@ -289,7 +289,7 @@ final class REngine implements Engine, Engine.Timings {
         } catch (RecognitionException e) {
             String line = e.line <= source.getLineCount() ? source.getCode(e.line) : "";
             String substring = line.substring(0, Math.min(line.length(), e.charPositionInLine + 1));
-            String token = e.token == null ? substring.substring(substring.length() - 1) : e.token.getText();
+            String token = e.token == null ? (substring.length() == 0 ? "" : substring.substring(substring.length() - 1)) : e.token.getText();
             if (e.token != null && e.token.getType() == Token.EOF && (e instanceof NoViableAltException || e instanceof MismatchedTokenException)) {
                 // the parser got stuck at the eof, request another line
                 throw new IncompleteSourceException(e, source, token, substring, e.line);
-- 
GitLab