From 1033245da3bfdc80cdb7a67597030222563754f4 Mon Sep 17 00:00:00 2001 From: alisdair sullivan Date: Tue, 9 Dec 2014 05:08:05 +0000 Subject: [PATCH] binary_to_whatever is not available on R15? fixed --- rebar.config | 4 +++- src/jsx_decoder.erl | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/rebar.config b/rebar.config index c59e185..628e738 100644 --- a/rebar.config +++ b/rebar.config @@ -1,2 +1,4 @@ % uncomment to disable encoding support for erlang maps -% {jsx_nomaps, true}. \ No newline at end of file +% {jsx_nomaps, true}. + +{erl_opts, [{platform_define, "R15", 'no_binary_to_whatever'}]}. \ No newline at end of file diff --git a/src/jsx_decoder.erl b/src/jsx_decoder.erl index ddbbfad..b16199b 100644 --- a/src/jsx_decoder.erl +++ b/src/jsx_decoder.erl @@ -929,10 +929,19 @@ finish_number(Rest, Handler, Acc, Stack, Config) -> maybe_done(Rest, handle_event(format_number(Acc), Handler, Config), Stack, Config). +-ifndef(no_binary_to_whatever). format_number({zero, Acc}) -> {integer, binary_to_integer(Acc)}; format_number({integer, Acc}) -> {integer, binary_to_integer(Acc)}; format_number({decimal, Acc}) -> {float, binary_to_float(Acc)}; format_number({exp, Acc}) -> {float, binary_to_float(Acc)}. +-endif. + +-ifdef(no_binary_to_whatever). +format_number({zero, Acc}) -> {integer, list_to_integer(unicode:characters_to_list(Acc))}; +format_number({integer, Acc}) -> {integer, list_to_integer(unicode:characters_to_list(Acc))}; +format_number({decimal, Acc}) -> {float, list_to_float(unicode:characters_to_list(Acc))}; +format_number({exp, Acc}) -> {float, list_to_float(unicode:characters_to_list(Acc))}. +-endif. true(<<$r, $u, $e, Rest/binary>>, Handler, Stack, Config) ->