@@ -113,63 +113,66 @@ var PRE_3OF4_APEX = Math.ceil((EXTERN_APEX / 4) * 3) - RADIOS;
113113 // v8::String::kMaxLength defined in v8.h
114114 const kStringMaxLength = process . binding ( 'buffer' ) . kStringMaxLength ;
115115
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-
120116 try {
121- new Buffer ( kStringMaxLength * 4 ) ;
117+ new Buffer ( kStringMaxLength * 3 ) ;
122118 } catch ( e ) {
123119 assert . equal ( e . message , 'Invalid array buffer length' ) ;
124120 console . log (
125121 '1..0 # Skipped: intensive toString tests due to memory confinements' ) ;
126122 return ;
127123 }
128124
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+
129134 assert . throws ( function ( ) {
130- new Buffer ( kStringMaxLength + 1 ) . toString ( 'ascii' ) ;
135+ buf1 . toString ( 'ascii' ) ;
131136 } , / t o S t r i n g f a i l e d / ) ;
132137
133138 assert . throws ( function ( ) {
134- new Buffer ( kStringMaxLength + 1 ) . toString ( 'utf8' ) ;
139+ buf1 . toString ( 'utf8' ) ;
135140 } , / t o S t r i n g f a i l e d / ) ;
136141
137142 assert . throws ( function ( ) {
138- new Buffer ( kStringMaxLength * 2 + 2 ) . toString ( 'utf16le' ) ;
143+ buf0 . toString ( 'utf16le' ) ;
139144 } , / t o S t r i n g f a i l e d / ) ;
140145
141146 assert . throws ( function ( ) {
142- new Buffer ( kStringMaxLength + 1 ) . toString ( 'binary' ) ;
147+ buf1 . toString ( 'binary' ) ;
143148 } , / t o S t r i n g f a i l e d / ) ;
144149
145150 assert . throws ( function ( ) {
146- new Buffer ( kStringMaxLength + 1 ) . toString ( 'base64' ) ;
151+ buf1 . toString ( 'base64' ) ;
147152 } , / t o S t r i n g f a i l e d / ) ;
148153
149154 assert . throws ( function ( ) {
150- new Buffer ( kStringMaxLength + 1 ) . toString ( 'hex' ) ;
155+ buf1 . toString ( 'hex' ) ;
151156 } , / t o S t r i n g f a i l e d / ) ;
152157
153- var maxString = new Buffer ( kStringMaxLength ) . toString ( ) ;
158+ var maxString = buf2 . toString ( ) ;
154159 assert . equal ( maxString . length , kStringMaxLength ) ;
155160 // Free the memory early instead of at the end of the next assignment
156161 maxString = undefined ;
157162
158- maxString = new Buffer ( kStringMaxLength ) . toString ( 'binary' ) ;
163+ maxString = buf2 . toString ( 'binary' ) ;
159164 assert . equal ( maxString . length , kStringMaxLength ) ;
160165 maxString = undefined ;
161166
162- maxString =
163- new Buffer ( kStringMaxLength + 1 ) . toString ( 'binary' , 1 ) ;
167+ maxString = buf1 . toString ( 'binary' , 1 ) ;
164168 assert . equal ( maxString . length , kStringMaxLength ) ;
165169 maxString = undefined ;
166170
167- maxString =
168- new Buffer ( kStringMaxLength + 1 ) . toString ( 'binary' , 0 , kStringMaxLength ) ;
171+ maxString = buf1 . toString ( 'binary' , 0 , kStringMaxLength ) ;
169172 assert . equal ( maxString . length , kStringMaxLength ) ;
170173 maxString = undefined ;
171174
172- maxString = new Buffer ( kStringMaxLength + 2 ) . toString ( 'utf16le' ) ;
175+ maxString = buf3 . toString ( 'utf16le' ) ;
173176 assert . equal ( maxString . length , ( kStringMaxLength + 2 ) / 2 ) ;
174177 maxString = undefined ;
175178} ) ( ) ;
0 commit comments