We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent f4639fb commit 3616fd6Copy full SHA for 3616fd6
2 files changed
src/msgpack_unpacker.erl
@@ -47,8 +47,20 @@ unpack_stream(<<16#C6, L:32/big-unsigned-integer-unit:1, V:L/binary, Rest/binary
47
%% Floats
48
unpack_stream(<<16#CA, V:32/float-unit:1, Rest/binary>>, _) ->
49
{V, Rest};
50
+unpack_stream(<<16#CA, 0:1, 16#FF:8, 0:23, Rest/binary>>, _) ->
51
+ {positive_infinity, Rest};
52
+unpack_stream(<<16#CA, 1:1, 16#FF:8, 0:23 , Rest/binary>>, _) ->
53
+ {negative_infinity, Rest};
54
+unpack_stream(<<16#CA, _:1, 16#FF:8, _:23 , Rest/binary>>, _) ->
55
+ {nan, Rest};
56
unpack_stream(<<16#CB, V:64/float-unit:1, Rest/binary>>, _) ->
57
58
+unpack_stream(<<16#CB, 0:1, 2#11111111111:11, 0:52, Rest/binary>>, _) ->
59
60
+unpack_stream(<<16#CB, 1:1, 2#11111111111:11, 0:52 , Rest/binary>>, _) ->
61
62
+unpack_stream(<<16#CB, _:1, 2#11111111111:11, _:52 , Rest/binary>>, _) ->
63
64
65
%% Unsigned integers
66
unpack_stream(<<16#CC, V:8/unsigned-integer, Rest/binary>>, _) ->
test/msgpack_tests.erl
@@ -625,3 +625,14 @@ unpack_str_validation_test_() ->
625
msgpack:unpack(binary_to_list(InvalidStr),
626
[{spec,new},{unpack_str,from_list},{validate_string,true}]))]}
627
].
628
+
629
630
+float_unpacking_test_() ->
631
+ %% float 32
632
+ [?_assertEqual({ok, nan}, msgpack:unpack(<<16#CA, 16#FF, 16#FF, 16#FF, 16#FF>>)),
633
+ ?_assertEqual({ok, positive_infinity}, msgpack:unpack(<<16#CA, 16#7F, 16#80, 16#00, 16#00>>)),
634
+ ?_assertEqual({ok, negative_infinity}, msgpack:unpack(<<16#CA, 16#FF, 16#80, 16#00, 16#00>>)),
635
+ %% float 64
636
+ ?_assertEqual({ok, nan}, msgpack:unpack(<<16#CB, 16#FF, 16#FF, 16#FF, 16#FF, 16#FF, 16#FF, 16#FF, 16#FF>>)),
637
+ ?_assertEqual({ok, positive_infinity}, msgpack:unpack(<<16#CB, 16#7F, 16#F0, 16#00, 16#00, 16#00, 16#00, 16#00, 16#00>>)),
638
+ ?_assertEqual({ok, negative_infinity}, msgpack:unpack(<<16#CB, 16#FF, 16#F0, 16#00, 16#00, 16#00, 16#00, 16#00, 16#00>>))].
0 commit comments