msgpack-perl
msgpack-perl copied to clipboard
prefer_integer: exclude numbers with leading zero and negative zero
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