msgpack-perl icon indicating copy to clipboard operation
msgpack-perl copied to clipboard

prefer_integer: exclude numbers with leading zero and negative zero

Open doiken opened this issue 4 years ago • 0 comments

Current prefer_integer treats numbers with leading zero and negative zero as integer. This modifies original data, and unpacked data are not the same as original data any more.

This PR fixes it by excluding them from packing as integer.

# current implementation
[root@a5abd099660f /]# perl -MData::MessagePack -E 'say Data::MessagePack->new->unpack(Data::MessagePack->new->prefer_integer->pack("01"))'
1
[root@a5abd099660f /]# perl -MData::MessagePack -E 'say Data::MessagePack->new->unpack(Data::MessagePack->new->prefer_integer->pack("-0"))'
0

# this pr
[root@0ad4d63ab685 /]# perl -MData::MessagePack -E 'say Data::MessagePack->new->unpack(Data::MessagePack->new->prefer_integer->pack("01"))'
01
[root@0ad4d63ab685 /]# perl -MData::MessagePack -E 'say Data::MessagePack->new->unpack(Data::MessagePack->new->prefer_integer->pack("-0"))'
-0

doiken avatar Dec 22 '19 15:12 doiken