Skip to content

Commit ca821e5

Browse files
committed
1 parent 5c5303e commit ca821e5

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

src/main/java/net/sf/jsqlparser/parser/SimpleCharStream.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -391,12 +391,22 @@ public char[] GetSuffix(int len) {
391391

392392
char[] ret = new char[len];
393393

394-
if ((bufpos + 1) >= len) {
395-
System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
394+
if (isStringProvider) {
395+
String str = ((StringProvider) inputStream)._string;
396+
if ((bufpos + 1) >= len) {
397+
str.getChars(bufpos - len + 1, bufpos - len + 1 + len, ret, 0);
398+
} else {
399+
str.getChars(bufsize - (len - bufpos - 1), bufsize - (len - bufpos - 1) + len - bufpos - 1, ret, 0);
400+
str.getChars(0, bufpos + 1, ret, len - bufpos - 1);
401+
}
396402
} else {
397-
System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
398-
len - bufpos - 1);
399-
System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
403+
if ((bufpos + 1) >= len) {
404+
System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
405+
} else {
406+
System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
407+
len - bufpos - 1);
408+
System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
409+
}
400410
}
401411

402412
return ret;

0 commit comments

Comments
 (0)