@@ -450,11 +450,12 @@ function concatBulkString (parser) {
450450 var chunks = list . length
451451 var offset = parser . bigStrSize - parser . totalChunkSize
452452 parser . offset = offset
453- if ( offset === 1 ) {
453+ if ( offset <= 2 ) {
454454 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 )
456456 }
457457 chunks --
458+ offset = list [ list . length - 2 ] . length + offset
458459 }
459460 var res = decoder . write ( list [ 0 ] . slice ( parser . bigOffset ) )
460461 for ( var i = 1 ; i < chunks - 1 ; i ++ ) {
@@ -478,25 +479,24 @@ function concatBulkBuffer (parser) {
478479 var length = parser . bigStrSize - parser . bigOffset - 2
479480 var offset = parser . bigStrSize - parser . totalChunkSize
480481 parser . offset = offset
481- if ( offset === 1 ) {
482+ if ( offset <= 2 ) {
482483 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 )
484485 }
485486 chunks --
486- offset = list [ list . length - 1 ] . length + 1
487+ offset = list [ list . length - 2 ] . length + offset
487488 }
488489 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
495496 }
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 )
500500}
501501
502502/**
0 commit comments