From 65deaaacf507c9e1d01773887d8c56be847ff1bd Mon Sep 17 00:00:00 2001
From: Nicolas Williams <nico@cryptonector.com>
Date: Sat, 4 May 2013 17:03:01 -0500
Subject: [PATCH] Fix #111: exit(1) when inputs are not valid JSON

---
 main.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/main.c b/main.c
index afdff189..423510b6 100644
--- a/main.c
+++ b/main.c
@@ -143,6 +143,7 @@ static int read_more(char* buf, size_t size) {
 }
 
 int main(int argc, char* argv[]) {
+  int ret = 0;
   if (argc) progname = argv[0];
 
   if (argc > 1 && !strcmp(argv[1], "--run-tests")) {
@@ -276,6 +277,7 @@ int main(int argc, char* argv[]) {
           jv msg = jv_invalid_get_msg(value);
           fprintf(stderr, "parse error: %s\n", jv_string_value(msg));
           jv_free(msg);
+          ret = 1;
           break;
         } else {
           jv_free(value);
@@ -283,11 +285,14 @@ int main(int argc, char* argv[]) {
       }
     }
     jv_parser_free(&parser);
+    if (ret != 0)
+      goto out;
     if (options & SLURP) {
       process(slurped, jq_flags);
     }
   }
+out:
   jv_mem_free(input_filenames);
   bytecode_free(bc);
-  return 0;
+  return ret;
 }