diff options
author | Stephen Dolan <mu@netsoc.tcd.ie> | 2013-05-11 18:10:21 +0100 |
---|---|---|
committer | Stephen Dolan <mu@netsoc.tcd.ie> | 2013-05-11 18:10:21 +0100 |
commit | e29db8d272eff570071d84d735fcbfc9f6fbcdd8 (patch) | |
tree | 9478a39dae6c7ef44feaa2cd8ee5a9842e32f089 | |
parent | 7ca5127fcc74ec2c58c1ad01de57d1c5ec00b827 (diff) |
Fix bug with path handling (used in assignments).
Closes #67
-rw-r--r-- | execute.c | 5 | ||||
-rw-r--r-- | tests/all.test | 8 |
2 files changed, 11 insertions, 2 deletions
@@ -180,7 +180,8 @@ jv jq_next(jq_state *jq) { } if (!param) break; jv_dump(jv_copy(param->sv.value), 0); - printf("<%d>", jv_get_refcnt(param->sv.value)); + //printf("<%d>", jv_get_refcnt(param->sv.value)); + printf("<%d>", param->sv.pathidx); } if (backtracking) printf("\t<backtracking>"); @@ -298,7 +299,7 @@ jv jq_next(jq_state *jq) { jv_free(path_end.value); jv path = jv_array(); for (int i=path_start.pathidx; i<path_end.pathidx; i++) { - path = jv_array_set(path, i, jv_copy(jq->pathbuf[i])); + path = jv_array_append(path, jv_copy(jq->pathbuf[i])); } stack_push(jq, stackval_replace(path_start, path)); break; diff --git a/tests/all.test b/tests/all.test index 83f91dae..97af7e55 100644 --- a/tests/all.test +++ b/tests/all.test @@ -574,3 +574,11 @@ unique .foo[.baz] {"foo":{"bar":4},"baz":"bar"} 4 + +.[] | .error = "no, it's OK" +[{"error":true}] +{"error": "no, it's OK"} + +[{a:1}] | .[] | .a=999 +null +{"a": 999} |