fixed parsing error related to interrupted utf-8 seqences
This commit is contained in:
parent
e24d7e7a3e
commit
c7ea7a6f08
1 changed files with 6 additions and 1 deletions
|
@ -262,6 +262,9 @@ key(<<>>, Stack, Callbacks, Opts) ->
|
||||||
%% unicode codepoints is faster than constructing binaries, many of which will be
|
%% unicode codepoints is faster than constructing binaries, many of which will be
|
||||||
%% converted back to lists by the user anyways.
|
%% converted back to lists by the user anyways.
|
||||||
|
|
||||||
|
%% the clause starting with Bin is necessary for cases where a stream is broken at a
|
||||||
|
%% point where it contains only a partial utf-8 sequence.
|
||||||
|
|
||||||
string(<<?quote, Rest/binary>>, [key|_] = Stack, Callbacks, Opts, Acc) ->
|
string(<<?quote, Rest/binary>>, [key|_] = Stack, Callbacks, Opts, Acc) ->
|
||||||
colon(Rest, Stack, fold({key, lists:reverse(Acc)}, Callbacks), Opts);
|
colon(Rest, Stack, fold({key, lists:reverse(Acc)}, Callbacks), Opts);
|
||||||
string(<<?quote, Rest/binary>>, Stack, Callbacks, Opts, Acc) ->
|
string(<<?quote, Rest/binary>>, Stack, Callbacks, Opts, Acc) ->
|
||||||
|
@ -270,6 +273,8 @@ string(<<?rsolidus, Rest/binary>>, Stack, Callbacks, Opts, Acc) ->
|
||||||
escape(Rest, Stack, Callbacks, Opts, Acc);
|
escape(Rest, Stack, Callbacks, Opts, Acc);
|
||||||
string(<<S/utf8, Rest/binary>>, Stack, Callbacks, Opts, Acc) when ?is_noncontrol(S) ->
|
string(<<S/utf8, Rest/binary>>, Stack, Callbacks, Opts, Acc) when ?is_noncontrol(S) ->
|
||||||
string(Rest, Stack, Callbacks, Opts, [S] ++ Acc);
|
string(Rest, Stack, Callbacks, Opts, [S] ++ Acc);
|
||||||
|
string(Bin, Stack, Callbacks, Opts, Acc) ->
|
||||||
|
{incomplete, fun(Stream) -> string(<<Bin/binary, Stream/binary>>, Stack, Callbacks, Opts, Acc) end};
|
||||||
string(<<>>, Stack, Callbacks, Opts, Acc) ->
|
string(<<>>, Stack, Callbacks, Opts, Acc) ->
|
||||||
{incomplete, fun(Stream) -> string(Stream, Stack, Callbacks, Opts, Acc) end}.
|
{incomplete, fun(Stream) -> string(Stream, Stack, Callbacks, Opts, Acc) end}.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue