From 6357eb74c1b9c3b5fc47963a86fe60375b78a2d6 Mon Sep 17 00:00:00 2001 From: alisdair sullivan Date: Fri, 12 Aug 2011 06:37:07 -0700 Subject: [PATCH] return {incomplete, ...} rather than error on incomplete input to json_to_term --- src/jsx_terms.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/jsx_terms.erl b/src/jsx_terms.erl index cd40f61..e47aac4 100644 --- a/src/jsx_terms.erl +++ b/src/jsx_terms.erl @@ -159,11 +159,11 @@ collect([{key, _} = PreKey|Next], Acc, Opts) -> Key = event(PreKey, Opts), collect(Next, [Key] ++ Acc, Opts); %% if our returned event is {jsx, incomplete, ...} try to force end and return -%% the Event if one is returned +%% the Event if one is returned, else just return {incomplete, More/1} collect({jsx, incomplete, More}, _Acc, Opts) -> case More(end_stream) of {jsx, [Event, end_json], _Next} -> event(Event, Opts) - ; _ -> erlang:error(badarg) + ; _ -> {incomplete, More} end; %% check acc to see if we're inside an object or an array. because inside an %% object context the events that fall this far are always preceded by a key