@@ -10,6 +10,8 @@ function encode( data ) {
1010 return Buffer . concat ( buffers )
1111}
1212
13+ encode . _floatConversionDetected = false
14+
1315encode . _encode = function ( buffers , data ) {
1416
1517 if ( data instanceof Buffer ) {
@@ -31,6 +33,7 @@ encode._encode = function( buffers, data ) {
3133 : encode . dict ( buffers , data )
3234 break
3335 }
36+
3437}
3538
3639var buff_e = new Buffer ( 'e' )
@@ -43,13 +46,23 @@ encode.bytes = function( buffers, data ) {
4346}
4447
4548encode . number = function ( buffers , data ) {
49+
4650 var maxLo = 4294967295
4751 var hi = ( data / maxLo ) << 0
4852 var lo = ( data % maxLo ) << 0
4953 var val = hi * maxLo + lo
50- buffers . push (
51- new Buffer ( 'i' + val + 'e'
52- ) )
54+
55+ buffers . push ( new Buffer ( 'i' + val + 'e' ) )
56+
57+ if ( val !== data && ! encode . _floatConversionDetected ) {
58+ encode . _floatConversionDetected = true
59+ console . warn (
60+ 'WARNING: Possible data corruption detected with value "' + data + '":' ,
61+ 'Bencoding only defines support for integers, value was converted to "' + val + '"'
62+ )
63+ console . trace ( )
64+ }
65+
5366}
5467
5568encode . dict = function ( buffers , data ) {
0 commit comments