Skip to content

Commit 3cb21e1

Browse files
committed
Updated lib/encode: Added warning on float conversion
1 parent 14ecca6 commit 3cb21e1

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

lib/encode.js

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ function encode( data ) {
1010
return Buffer.concat( buffers )
1111
}
1212

13+
encode._floatConversionDetected = false
14+
1315
encode._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

3639
var buff_e = new Buffer('e')
@@ -43,13 +46,23 @@ encode.bytes = function( buffers, data ) {
4346
}
4447

4548
encode.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

5568
encode.dict = function( buffers, data ) {

0 commit comments

Comments
 (0)