@@ -987,106 +987,18 @@ function fromList(n, state) {
987
987
if ( state . decoder )
988
988
ret = state . buffer . join ( '' ) ;
989
989
else if ( state . buffer . length === 1 )
990
- ret = state . buffer . head . data ;
990
+ ret = state . buffer . first ( ) ;
991
991
else
992
992
ret = state . buffer . concat ( state . length ) ;
993
993
state . buffer . clear ( ) ;
994
994
} else {
995
995
// read part of list
996
- ret = fromListPartial ( n , state . buffer , state . decoder ) ;
996
+ ret = state . buffer . consume ( n , state . decoder ) ;
997
997
}
998
998
999
999
return ret ;
1000
1000
}
1001
1001
1002
- // Extracts only enough buffered data to satisfy the amount requested.
1003
- // This function is designed to be inlinable, so please take care when making
1004
- // changes to the function body.
1005
- function fromListPartial ( n , list , hasStrings ) {
1006
- var ret ;
1007
- if ( n < list . head . data . length ) {
1008
- // slice is the same for buffers and strings
1009
- ret = list . head . data . slice ( 0 , n ) ;
1010
- list . head . data = list . head . data . slice ( n ) ;
1011
- } else if ( n === list . head . data . length ) {
1012
- // first chunk is a perfect match
1013
- ret = list . shift ( ) ;
1014
- } else {
1015
- // result spans more than one buffer
1016
- ret = hasStrings ? copyFromBufferString ( n , list ) : copyFromBuffer ( n , list ) ;
1017
- }
1018
- return ret ;
1019
- }
1020
-
1021
- // Copies a specified amount of characters from the list of buffered data
1022
- // chunks.
1023
- // This function is designed to be inlinable, so please take care when making
1024
- // changes to the function body.
1025
- function copyFromBufferString ( n , list ) {
1026
- var p = list . head ;
1027
- var c = 1 ;
1028
- var ret = p . data ;
1029
- n -= ret . length ;
1030
- while ( p = p . next ) {
1031
- const str = p . data ;
1032
- const nb = ( n > str . length ? str . length : n ) ;
1033
- if ( nb === str . length )
1034
- ret += str ;
1035
- else
1036
- ret += str . slice ( 0 , n ) ;
1037
- n -= nb ;
1038
- if ( n === 0 ) {
1039
- if ( nb === str . length ) {
1040
- ++ c ;
1041
- if ( p . next )
1042
- list . head = p . next ;
1043
- else
1044
- list . head = list . tail = null ;
1045
- } else {
1046
- list . head = p ;
1047
- p . data = str . slice ( nb ) ;
1048
- }
1049
- break ;
1050
- }
1051
- ++ c ;
1052
- }
1053
- list . length -= c ;
1054
- return ret ;
1055
- }
1056
-
1057
- // Copies a specified amount of bytes from the list of buffered data chunks.
1058
- // This function is designed to be inlinable, so please take care when making
1059
- // changes to the function body.
1060
- function copyFromBuffer ( n , list ) {
1061
- const ret = Buffer . allocUnsafe ( n ) ;
1062
- var p = list . head ;
1063
- var c = 1 ;
1064
- p . data . copy ( ret ) ;
1065
- n -= p . data . length ;
1066
- while ( p = p . next ) {
1067
- const buf = p . data ;
1068
- const nb = ( n > buf . length ? buf . length : n ) ;
1069
- buf . copy ( ret , ret . length - n , 0 , nb ) ;
1070
- n -= nb ;
1071
- if ( n === 0 ) {
1072
- if ( nb === buf . length ) {
1073
- ++ c ;
1074
- if ( p . next )
1075
- list . head = p . next ;
1076
- else
1077
- list . head = list . tail = null ;
1078
- } else {
1079
- list . head = p ;
1080
- p . data = buf . slice ( nb ) ;
1081
- }
1082
- break ;
1083
- }
1084
- ++ c ;
1085
- }
1086
- list . length -= c ;
1087
- return ret ;
1088
- }
1089
-
1090
1002
function endReadable ( stream ) {
1091
1003
var state = stream . _readableState ;
1092
1004
0 commit comments