@@ -25,43 +25,46 @@ function binary(name,
2525 reverseTransform = value => value ,
2626 } = { }
2727) {
28+ let instanceSize = size ;
29+
2830 function parse ( buffer , parseTree , { bigEndian } ) {
2931 let offset = 0 ;
32+ instanceSize = size ;
3033
3134 // determine size to copy to result buffer
3235 if ( sizePrefixed ) {
3336 const { parse : prefixParser } = uint ( 'prefix' , { size : sizePrefixLength , bigEndian : sizePrefixBigEndian } ) ;
3437 const result = prefixParser ( buffer , { } , { bigEndian } ) ;
3538
36- size = result . value ;
39+ instanceSize = result . value ;
3740 offset = result . size ;
3841 }
3942 if ( sizeField ) {
40- size = sizeFieldTransform ( parseTree [ sizeField ] ) ;
43+ instanceSize = sizeFieldTransform ( parseTree [ sizeField ] ) ;
4144 }
42- if ( size === undefined ) {
43- size = buffer . length ;
45+ if ( instanceSize === undefined ) {
46+ instanceSize = buffer . length ;
4447 }
4548
4649 // just copy data to result
47- const result = new Buffer ( size ) ;
50+ const result = new Buffer ( instanceSize ) ;
4851
49- buffer . copy ( result , 0 , offset , size + offset ) ;
52+ buffer . copy ( result , 0 , offset , instanceSize + offset ) ;
5053
5154 // return result
5255 return {
5356 value : transform ( result ) ,
54- size : size + offset ,
57+ size : instanceSize + offset ,
5558 } ;
5659 }
5760
5861 function prepareEncode ( object , parseTree , { bigEndian } ) {
5962 if ( size === undefined ) {
60- size = object . length ;
63+ instanceSize = object . length ;
6164 }
6265
6366 if ( sizeField ) {
64- parseTree [ sizeField ] = sizeFieldReverseTransform ( size ) ;
67+ parseTree [ sizeField ] = sizeFieldReverseTransform ( instanceSize ) ;
6568 }
6669 }
6770
@@ -74,21 +77,21 @@ function binary(name,
7477 const result = prefixEncoder ( transformed . length , { bigEndian } ) ;
7578
7679 bufferItems . unshift ( result ) ;
77- size = transformed . length + sizePrefixLength ;
80+ instanceSize = transformed . length + sizePrefixLength ;
7881 }
79- if ( size === undefined ) {
80- size = transformed . length ;
82+ if ( instanceSize === undefined ) {
83+ instanceSize = transformed . length ;
8184 }
8285
8386 // build buffer
8487 let data = Buffer . concat ( bufferItems ) ;
8588
86- if ( data . length < size ) {
89+ if ( data . length < instanceSize ) {
8790 // if the buffer was shorter than anticipated, pad with zeroes
88- data = Buffer . concat ( [ data , Buffer . alloc ( size - data . length ) ] ) ;
89- } else if ( data . length > size ) {
91+ data = Buffer . concat ( [ data , Buffer . alloc ( instanceSize - data . length ) ] ) ;
92+ } else if ( data . length > instanceSize ) {
9093 // if the buffer was longer just cut it off
91- data = data . slice ( 0 , size ) ;
94+ data = data . slice ( 0 , instanceSize ) ;
9295 }
9396
9497 return data ;
0 commit comments