diff --git a/execute.c b/execute.c index ef727dc3..387bf389 100644 --- a/execute.c +++ b/execute.c @@ -770,12 +770,12 @@ int jq_compile_args(jq_state *jq, const char* str, jv args) { program = gen_var_binding(gen_const(value), jv_string_value(name), program); jv_free(name); } - jv_free(args); nerrors = builtins_bind(jq, &program); if (nerrors == 0) { nerrors = block_compile(program, &locations, &jq->bc); } } + jv_free(args); if (nerrors) { jv s = jv_string_fmt("%d compile %s", nerrors, nerrors > 1 ? "errors" : "error"); diff --git a/jq_test.c b/jq_test.c index d63d22ac..15069136 100644 --- a/jq_test.c +++ b/jq_test.c @@ -252,4 +252,11 @@ static void jv_test() { jv_free(o2); } + + /// Compile errors + { + jq_state *jq = jq_init(); + jq_compile_args(jq, "}", jv_array()); + jq_teardown(&jq); + } }