@@ -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