Browse Source

main: fix spurious premature parse aborts in array mode

When reading newline separated JSON (array mode), continue parsing even
if the JSON tokener signals success, as another object might follow.

Fixes: FS#3683
Fixes: openwrt#8703
Fixes: openwrt#11649
Fixes: openwrt#12344
Fixes: 8614470 ("main: implement array mode")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Jo-Philipp Wich 3 months ago
parent
commit
594cfa8646
1 changed files with 2 additions and 4 deletions
  1. 2 4
      main.c

+ 2 - 4
main.c

@@ -146,10 +146,8 @@ parse_json(FILE *fd, const char *source, const char **error, bool array_mode)
 		{
 			obj = parse_json_chunk(tok, array, buf, len, &err);
 
-			if (err == json_tokener_success && !array)
-				break;
-
-			if (err != json_tokener_continue)
+			if ((err == json_tokener_success && array_mode == false) ||
+			    (err != json_tokener_continue && err != json_tokener_success))
 				break;
 		}
 	}