From 4451c08007401d1ff43973a519cf9788276afcb6 Mon Sep 17 00:00:00 2001 From: Nicolas Williams Date: Fri, 29 May 2015 11:48:10 -0500 Subject: [PATCH] Fix jv_load_file() (partial fix #799) --- jv_file.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/jv_file.c b/jv_file.c index a633160..17c99c6 100644 --- a/jv_file.c +++ b/jv_file.c @@ -30,14 +30,18 @@ jv jv_load_file(const char* filename, int raw) { jv value; while (jv_is_valid((value = jv_parser_next(parser)))) data = jv_array_append(data, value); - jv_free(value); + if (jv_invalid_has_msg(jv_copy(value))) { + jv_free(data); + data = value; + value = jv_invalid(); + break; + } } } if (!raw) jv_parser_free(parser); int badread = ferror(file); - fclose(file); - if (badread) { + if (fclose(file) != 0 || badread) { jv_free(data); return jv_invalid_with_msg(jv_string_fmt("Error reading from %s", filename)); -- 2.40.0