diff --git a/src/jsx.erl b/src/jsx.erl index 663030c..6abaff3 100644 --- a/src/jsx.erl +++ b/src/jsx.erl @@ -199,7 +199,7 @@ load_tests([Test|Rest], Dir, Acc) -> ParsedTest = parse_tests(TestSpec, Dir), load_tests(Rest, Dir, [ParsedTest] ++ Acc) ; {error, _Reason} -> - load_tests(Rest, Dir, Acc) + erlang:error(Test) end. diff --git a/src/jsx_decoder.hrl b/src/jsx_decoder.hrl index 0bfcae1..ac40cfa 100644 --- a/src/jsx_decoder.hrl +++ b/src/jsx_decoder.hrl @@ -630,7 +630,7 @@ low_surrogate(<>, Stack, Opts, String, [C, B, A], H) string(Rest, Stack, Opts, - <> + [16#fffd, 16#fffd] ++ String ) ; false -> {error, {badjson, <>}} diff --git a/test/cases/encoded_surrogates.test b/test/cases/encoded_surrogates.test index d65c5c0..ae071c7 100644 --- a/test/cases/encoded_surrogates.test +++ b/test/cases/encoded_surrogates.test @@ -1,3 +1,3 @@ {name, "encoded_surrogates"}. -{jsx, [start_array,{string,66560]},end_array,end_json]}. +{jsx, [start_array,{string,[66560]},end_array,end_json]}. {json, "encoded_surrogates.json"}. diff --git a/test/cases/noncharacter_replaced.test b/test/cases/noncharacter_replaced.test index 2718106..2e1752c 100644 --- a/test/cases/noncharacter_replaced.test +++ b/test/cases/noncharacter_replaced.test @@ -1,4 +1,4 @@ {name, "noncharacter replaced"}. -{jsx, [{string,[16#fffd/utf8]},end_json]}. +{jsx, [{string,[16#fffd]},end_json]}. {json, "noncharacter_replaced.json"}. {jsx_flags, [loose_unicode]}. \ No newline at end of file diff --git a/test/cases/unpaired_surrogate_replaced.test b/test/cases/unpaired_surrogate_replaced.test index 531fc69..5061dc8 100644 --- a/test/cases/unpaired_surrogate_replaced.test +++ b/test/cases/unpaired_surrogate_replaced.test @@ -1,4 +1,4 @@ {name, "unpaired surrogate replaced"}. -{jsx, [start_array,{string,16#fffd/utf8 ++ "blah"},end_array,end_json]}. +{jsx, [start_array,{string,[65533,$b,$l,$a,$h]},end_array,end_json]}. {json, "unpaired_surrogate_replaced.json"}. {jsx_flags, [loose_unicode]}.