@@ -450,11 +450,12 @@ function concatBulkString (parser) {
450
450
var chunks = list . length
451
451
var offset = parser . bigStrSize - parser . totalChunkSize
452
452
parser . offset = offset
453
- if ( offset === 1 ) {
453
+ if ( offset <= 2 ) {
454
454
if ( chunks === 2 ) {
455
- return list [ 0 ] . toString ( 'utf8' , parser . bigOffset , list [ 0 ] . length - 1 )
455
+ return list [ 0 ] . toString ( 'utf8' , parser . bigOffset , list [ 0 ] . length + offset - 2 )
456
456
}
457
457
chunks --
458
+ offset = list [ list . length - 2 ] . length + offset
458
459
}
459
460
var res = decoder . write ( list [ 0 ] . slice ( parser . bigOffset ) )
460
461
for ( var i = 1 ; i < chunks - 1 ; i ++ ) {
@@ -478,25 +479,24 @@ function concatBulkBuffer (parser) {
478
479
var length = parser . bigStrSize - parser . bigOffset - 2
479
480
var offset = parser . bigStrSize - parser . totalChunkSize
480
481
parser . offset = offset
481
- if ( offset === 1 ) {
482
+ if ( offset <= 2 ) {
482
483
if ( chunks === 2 ) {
483
- return list [ 0 ] . slice ( parser . bigOffset , list [ 0 ] . length - 1 )
484
+ return list [ 0 ] . slice ( parser . bigOffset , list [ 0 ] . length + offset - 2 )
484
485
}
485
486
chunks --
486
- offset = list [ list . length - 1 ] . length + 1
487
+ offset = list [ list . length - 2 ] . length + offset
487
488
}
488
489
resizeBuffer ( length )
489
- var pos = bufferOffset
490
- list [ 0 ] . copy ( bufferPool , pos , parser . bigOffset , list [ 0 ] . length )
491
- pos += list [ 0 ] . length - parser . bigOffset
492
- for ( var i = 1 ; i < list . length - 1 ; i ++ ) {
493
- list [ i ] . copy ( bufferPool , pos )
494
- pos += list [ i ] . length
490
+ var start = bufferOffset
491
+ list [ 0 ] . copy ( bufferPool , start , parser . bigOffset , list [ 0 ] . length )
492
+ bufferOffset += list [ 0 ] . length - parser . bigOffset
493
+ for ( var i = 1 ; i < chunks - 1 ; i ++ ) {
494
+ list [ i ] . copy ( bufferPool , bufferOffset )
495
+ bufferOffset += list [ i ] . length
495
496
}
496
- list [ i ] . copy ( bufferPool , pos , 0 , offset - 2 )
497
- var buffer = bufferPool . slice ( bufferOffset , length + bufferOffset )
498
- bufferOffset += length
499
- return buffer
497
+ list [ i ] . copy ( bufferPool , bufferOffset , 0 , offset - 2 )
498
+ bufferOffset += offset - 2
499
+ return bufferPool . slice ( start , bufferOffset )
500
500
}
501
501
502
502
/**
0 commit comments