@@ -391,12 +391,22 @@ public char[] GetSuffix(int len) {
391
391
392
392
char [] ret = new char [len ];
393
393
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
+ }
396
402
} 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
+ }
400
410
}
401
411
402
412
return ret ;
0 commit comments