From 7c7c970dbabf19fba9a5d9438cc77716b5d694ae Mon Sep 17 00:00:00 2001 From: Evgeniy Vanzhula Date: Wed, 29 Dec 2021 08:53:54 +0300 Subject: [PATCH] Protection from StringIndexOutOfBoundsException --- .../languageserver/context/computer/QueryComputer.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/QueryComputer.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/QueryComputer.java index 20f6f1bd0ad..b3eb3e031e5 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/QueryComputer.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/context/computer/QueryComputer.java @@ -107,7 +107,7 @@ public ParseTree visitString(BSLParser.StringContext ctx) { for (Token token : ctx.getTokens()) { // бывает несколько токенов строки в одной строе файла - // добавляем часть строки только в случае находления ее на другой строке файла + // добавляем часть строки только в случае нахождения ее на другой строке файла if (token.getLine() != prevTokenLine && prevTokenLine != -1) { strings.add(partString); partString = ""; @@ -116,7 +116,11 @@ public ParseTree visitString(BSLParser.StringContext ctx) { // если новый токен строки находится на той же строке файла, что и предыдущий, то добавляем его к ней if (token.getLine() == prevTokenLine && prevTokenLine != -1) { var newString = getString(startLine, token); - partString = newString.substring(partString.length()); + if (newString.length() > partString.length()) { + partString = newString.substring(partString.length()); + } else { + partString = ""; + } } else { partString = getString(startLine, token); }