@@ -113,63 +113,66 @@ var PRE_3OF4_APEX = Math.ceil((EXTERN_APEX / 4) * 3) - RADIOS;
113
113
// v8::String::kMaxLength defined in v8.h
114
114
const kStringMaxLength = process . binding ( 'buffer' ) . kStringMaxLength ;
115
115
116
- assert . throws ( function ( ) {
117
- new Buffer ( kStringMaxLength + 1 ) . toString ( ) ;
118
- } , / t o S t r i n g f a i l e d | I n v a l i d a r r a y b u f f e r l e n g t h / ) ;
119
-
120
116
try {
121
- new Buffer ( kStringMaxLength * 4 ) ;
117
+ new Buffer ( kStringMaxLength * 3 ) ;
122
118
} catch ( e ) {
123
119
assert . equal ( e . message , 'Invalid array buffer length' ) ;
124
120
console . log (
125
121
'1..0 # Skipped: intensive toString tests due to memory confinements' ) ;
126
122
return ;
127
123
}
128
124
125
+ const buf0 = new Buffer ( kStringMaxLength * 2 + 2 ) ;
126
+ const buf1 = buf0 . slice ( 0 , kStringMaxLength + 1 ) ;
127
+ const buf2 = buf0 . slice ( 0 , kStringMaxLength ) ;
128
+ const buf3 = buf0 . slice ( 0 , kStringMaxLength + 2 ) ;
129
+
130
+ assert . throws ( function ( ) {
131
+ buf1 . toString ( ) ;
132
+ } , / t o S t r i n g f a i l e d | I n v a l i d a r r a y b u f f e r l e n g t h / ) ;
133
+
129
134
assert . throws ( function ( ) {
130
- new Buffer ( kStringMaxLength + 1 ) . toString ( 'ascii' ) ;
135
+ buf1 . toString ( 'ascii' ) ;
131
136
} , / t o S t r i n g f a i l e d / ) ;
132
137
133
138
assert . throws ( function ( ) {
134
- new Buffer ( kStringMaxLength + 1 ) . toString ( 'utf8' ) ;
139
+ buf1 . toString ( 'utf8' ) ;
135
140
} , / t o S t r i n g f a i l e d / ) ;
136
141
137
142
assert . throws ( function ( ) {
138
- new Buffer ( kStringMaxLength * 2 + 2 ) . toString ( 'utf16le' ) ;
143
+ buf0 . toString ( 'utf16le' ) ;
139
144
} , / t o S t r i n g f a i l e d / ) ;
140
145
141
146
assert . throws ( function ( ) {
142
- new Buffer ( kStringMaxLength + 1 ) . toString ( 'binary' ) ;
147
+ buf1 . toString ( 'binary' ) ;
143
148
} , / t o S t r i n g f a i l e d / ) ;
144
149
145
150
assert . throws ( function ( ) {
146
- new Buffer ( kStringMaxLength + 1 ) . toString ( 'base64' ) ;
151
+ buf1 . toString ( 'base64' ) ;
147
152
} , / t o S t r i n g f a i l e d / ) ;
148
153
149
154
assert . throws ( function ( ) {
150
- new Buffer ( kStringMaxLength + 1 ) . toString ( 'hex' ) ;
155
+ buf1 . toString ( 'hex' ) ;
151
156
} , / t o S t r i n g f a i l e d / ) ;
152
157
153
- var maxString = new Buffer ( kStringMaxLength ) . toString ( ) ;
158
+ var maxString = buf2 . toString ( ) ;
154
159
assert . equal ( maxString . length , kStringMaxLength ) ;
155
160
// Free the memory early instead of at the end of the next assignment
156
161
maxString = undefined ;
157
162
158
- maxString = new Buffer ( kStringMaxLength ) . toString ( 'binary' ) ;
163
+ maxString = buf2 . toString ( 'binary' ) ;
159
164
assert . equal ( maxString . length , kStringMaxLength ) ;
160
165
maxString = undefined ;
161
166
162
- maxString =
163
- new Buffer ( kStringMaxLength + 1 ) . toString ( 'binary' , 1 ) ;
167
+ maxString = buf1 . toString ( 'binary' , 1 ) ;
164
168
assert . equal ( maxString . length , kStringMaxLength ) ;
165
169
maxString = undefined ;
166
170
167
- maxString =
168
- new Buffer ( kStringMaxLength + 1 ) . toString ( 'binary' , 0 , kStringMaxLength ) ;
171
+ maxString = buf1 . toString ( 'binary' , 0 , kStringMaxLength ) ;
169
172
assert . equal ( maxString . length , kStringMaxLength ) ;
170
173
maxString = undefined ;
171
174
172
- maxString = new Buffer ( kStringMaxLength + 2 ) . toString ( 'utf16le' ) ;
175
+ maxString = buf3 . toString ( 'utf16le' ) ;
173
176
assert . equal ( maxString . length , ( kStringMaxLength + 2 ) / 2 ) ;
174
177
maxString = undefined ;
175
178
} ) ( ) ;
0 commit comments