fixed a nasty performance regression caused by a misordered clause
This commit is contained in:
parent
fca157c116
commit
d42acf4411
2 changed files with 6 additions and 3 deletions
|
@ -1,9 +1,12 @@
|
|||
-module(jsx).
|
||||
|
||||
-export([decoder/0, decoder/2]).
|
||||
-export([decoder/0, decoder/2, decode/3]).
|
||||
|
||||
-include("jsx_common.hrl").
|
||||
|
||||
decode(JSON, Callbacks, Opts) ->
|
||||
(decoder(Callbacks, Opts))(JSON).
|
||||
|
||||
decoder() ->
|
||||
decoder(none, []).
|
||||
|
||||
|
|
|
@ -38,9 +38,9 @@ start(<<S/utf8, Rest/binary>>, Stack, Callbacks, Opts) when ?is_whitespace(S) ->
|
|||
start(<<>>, Stack, Callbacks, Opts) ->
|
||||
fun(Stream) -> start(Stream, Stack, Callbacks, Opts) end.
|
||||
|
||||
maybe_done(eof, [], Callbacks, Opts) when Opts#opts.explicit_termination == true ->
|
||||
maybe_done(<<16#FF8F>>, [], Callbacks, Opts) when Opts#opts.explicit_termination == true ->
|
||||
{callback(eof, Callbacks), <<>>};
|
||||
maybe_done(Rest, [], Callbacks, Opts) when Opts#opts.explicit_termination == false ->
|
||||
maybe_done(<<Rest/binary>>, [], Callbacks, Opts) when Opts#opts.explicit_termination == false ->
|
||||
{callback(eof, Callbacks), Rest};
|
||||
maybe_done(<<?end_object/utf8, Rest/binary>>, [object|Stack], Callbacks, Opts) ->
|
||||
maybe_done(Rest, Stack, callback(end_object, Callbacks), Opts);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue