@@ -98,67 +98,63 @@ module.exports = class BufferList {
98
98
99
99
// Consumes a specified amount of characters from the buffered data.
100
100
_getString ( n ) {
101
- var p = this . head ;
102
- var c = 1 ;
103
- var ret = p . data ;
104
- n -= ret . length ;
105
- while ( p = p . next ) {
101
+ let ret = '' ;
102
+ let p = this . head ;
103
+ let c = 0 ;
104
+ do {
106
105
const str = p . data ;
107
- const nb = ( n > str . length ? str . length : n ) ;
108
- if ( nb === str . length )
106
+ if ( n > str . length ) {
109
107
ret += str ;
110
- else
111
- ret += str . slice ( 0 , n ) ;
112
- n -= nb ;
113
- if ( n === 0 ) {
114
- if ( nb === str . length ) {
108
+ n -= str . length ;
109
+ } else {
110
+ if ( n === str . length ) {
111
+ ret += str ;
115
112
++ c ;
116
113
if ( p . next )
117
114
this . head = p . next ;
118
115
else
119
116
this . head = this . tail = null ;
120
117
} else {
118
+ ret += str . slice ( 0 , n ) ;
121
119
this . head = p ;
122
- p . data = str . slice ( nb ) ;
120
+ p . data = str . slice ( n ) ;
123
121
}
124
122
break ;
125
123
}
126
124
++ c ;
127
- }
125
+ } while ( p = p . next ) ;
128
126
this . length -= c ;
129
127
return ret ;
130
128
}
131
129
132
130
// Consumes a specified amount of bytes from the buffered data.
133
131
_getBuffer ( n ) {
134
132
const ret = Buffer . allocUnsafe ( n ) ;
135
- var p = this . head ;
136
- var c = 1 ;
137
- p . data . copy ( ret ) ;
138
- n -= p . data . length ;
139
- while ( p = p . next ) {
133
+ const retLen = n ;
134
+ let p = this . head ;
135
+ let c = 0 ;
136
+ do {
140
137
const buf = p . data ;
141
- const nb = ( n > buf . length ? buf . length : n ) ;
142
- if ( nb === buf . length )
143
- ret . set ( buf , ret . length - n ) ;
144
- else
145
- ret . set ( new Uint8Array ( buf . buffer , buf . byteOffset , nb ) , ret . length - n ) ;
146
- n -= nb ;
147
- if ( n === 0 ) {
148
- if ( nb === buf . length ) {
138
+ if ( n > buf . length ) {
139
+ ret . set ( buf , retLen - n ) ;
140
+ n -= buf . length ;
141
+ } else {
142
+ if ( n === buf . length ) {
143
+ ret . set ( buf , retLen - n ) ;
149
144
++ c ;
150
145
if ( p . next )
151
146
this . head = p . next ;
152
147
else
153
148
this . head = this . tail = null ;
154
149
} else {
150
+ ret . set ( new Uint8Array ( buf . buffer , buf . byteOffset , n ) , retLen - n ) ;
155
151
this . head = p ;
156
- p . data = buf . slice ( nb ) ;
152
+ p . data = buf . slice ( n ) ;
157
153
}
158
154
break ;
159
155
}
160
156
++ c ;
161
- }
157
+ } while ( p = p . next ) ;
162
158
this . length -= c ;
163
159
return ret ;
164
160
}
0 commit comments