From: Nicolas Williams Date: Tue, 8 Jul 2014 03:26:53 +0000 (-0500) Subject: `error(x)` should not `tostring` its arg; fix #466 X-Git-Tag: jq-1.5rc1~131 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a68958e5dcfee19478c1812ea73b01625c734029;p=jq `error(x)` should not `tostring` its arg; fix #466 --- diff --git a/builtin.c b/builtin.c index 9089d47..69a4139 100644 --- a/builtin.c +++ b/builtin.c @@ -781,7 +781,6 @@ static jv f_type(jv input) { static jv f_error(jv input, jv msg) { jv_free(input); - msg = f_tostring(msg); return jv_invalid_with_msg(msg); } diff --git a/main.c b/main.c index 80497e7..edf3f4f 100644 --- a/main.c +++ b/main.c @@ -127,7 +127,12 @@ static int process(jq_state *jq, jv value, int flags) { if (jv_invalid_has_msg(jv_copy(result))) { // Uncaught jq exception jv msg = jv_invalid_get_msg(jv_copy(result)); - fprintf(stderr, "jq: error: %s\n", jv_string_value(msg)); + if (jv_get_kind(msg) == JV_KIND_STRING) { + fprintf(stderr, "jq: error: %s\n", jv_string_value(msg)); + } else { + msg = jv_dump_string(msg, 0); + fprintf(stderr, "jq: error (not a string): %s\n", jv_string_value(msg)); + } jv_free(msg); } jv_free(result);