summaryrefslogtreecommitdiff
path: root/jq.pyx
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-09-08 23:32:59 +0100
committerMichael Williamson <mike@zwobble.org>2015-09-09 00:08:45 +0100
commit75e786256c2bd1d3acdbccb7bf769443679f590d (patch)
tree0e615e0b931ffbda8e8944762554c2b622d47571 /jq.pyx
parent67294953a9ef2c72584bc6801457f3de2dec5c7f (diff)
Update jq to 1.5
Diffstat (limited to 'jq.pyx')
-rw-r--r--jq.pyx20
1 files changed, 12 insertions, 8 deletions
diff --git a/jq.pyx b/jq.pyx
index 6e6a3e3..2da5f41 100644
--- a/jq.pyx
+++ b/jq.pyx
@@ -141,18 +141,22 @@ cdef class _Program(object):
if jv_is_valid(value):
self._process(value, results)
else:
- if jv_invalid_has_msg(jv_copy(value)):
- error_message = jv_invalid_get_msg(value)
- full_error_message = b"parse error: " + jv_string_value(error_message) + b"\n"
- self._error_store.store_error(full_error_message)
- jv_free(error_message)
- else:
- jv_free(value)
+ self._handle_invalid_jv(value, b"parse error: ")
break
jv_parser_free(parser)
return results
+
+ cdef void _handle_invalid_jv(self, jv value, char* prefix):
+ if jv_invalid_has_msg(jv_copy(value)):
+ error_message = jv_invalid_get_msg(value)
+ full_error_message = prefix + jv_string_value(error_message)
+ self._error_store.store_error(full_error_message)
+ jv_free(error_message)
+ else:
+ jv_free(value)
+
cdef void _process(self, jv value, object output):
@@ -166,7 +170,7 @@ cdef class _Program(object):
while True:
result = jq_next(self._jq)
if not jv_is_valid(result):
- jv_free(result)
+ self._handle_invalid_jv(result, b"")
return
else:
dumped = jv_dump_string(result, dumpopts)