diff --git a/src/jsx_decoder.erl b/src/jsx_decoder.erl index 81f06ba..de8e1af 100644 --- a/src/jsx_decoder.erl +++ b/src/jsx_decoder.erl @@ -311,7 +311,7 @@ string(<>, Handler, Acc, Stack, Config) -> string(<>, Handler, Acc, Stack, Config) -> unescape(Rest, Handler, Acc, Stack, Config); string(<>, Handler, Acc, Stack, Config=#config{uescape=true}) when X >= 16#80 -> - string(Rest, Handler, [Acc, maybe_replace(X, Config)], Stack, Config); + string(Rest, Handler, [Acc, json_escape_sequence(X)], Stack, Config); string(<>, Handler, Acc, Stack, Config) when X == 16#2028; X == 16#2029 -> string(Rest, Handler, [Acc, maybe_replace(X, Config)], Stack, Config); string(<<_/utf8, _/binary>> = Bin, Handler, Acc, Stack, Config) -> @@ -761,9 +761,6 @@ maybe_replace(X, Config=#config{escaped_strings=true}) when X == 16#2028; X == end; maybe_replace(X, #config{escaped_strings=true}) when X < 32 -> json_escape_sequence(X); -%% escaped even if no other escaping requested! -maybe_replace(X, #config{uescape=true}) when X >= 16#80 -> - json_escape_sequence(X); maybe_replace(X, _Config) -> <>. diff --git a/src/jsx_parser.erl b/src/jsx_parser.erl index 7a8f230..e99ef53 100644 --- a/src/jsx_parser.erl +++ b/src/jsx_parser.erl @@ -205,7 +205,7 @@ clean(<<47, Rest/binary>>, Acc, Config) -> clean(<<92, Rest/binary>>, Acc, Config) -> clean(Rest, [Acc, maybe_replace(92, Config)], Config); clean(<>, Acc, Config=#config{uescape=true}) when X >= 16#80 -> - clean(Rest, [Acc, maybe_replace(X, Config)], Config); + clean(Rest, [Acc, json_escape_sequence(X)], Config); clean(<>, Acc, Config) when X == 16#2028; X == 16#2029 -> clean(Rest, [Acc, maybe_replace(X, Config)], Config); clean(<<_/utf8, _/binary>> = Bin, Acc, Config) -> @@ -489,9 +489,6 @@ maybe_replace($\\, #config{escaped_strings=true}) -> [$\\, $\\]; maybe_replace(X, #config{escaped_strings=true}) when X < 32 -> json_escape_sequence(X); -%% escaped even if no other escaping was requested! -maybe_replace(X, #config{uescape=true}) when X >= 16#80 -> - json_escape_sequence(X); maybe_replace(X, Config=#config{escaped_strings=true}) when X == 16#2028; X == 16#2029 -> case Config#config.unescaped_jsonp of true -> [<>];