1
0
mirror of https://github.com/stedolan/jq.git synced 2024-05-11 05:55:39 +00:00

Fix a memory leak in JV and add more tests

This commit is contained in:
Stephen Dolan
2012-09-03 17:18:10 +01:00
parent eea05ff924
commit 32e324a283
2 changed files with 11 additions and 1 deletions

4
c/jv.c
View File

@ -240,7 +240,9 @@ jv jv_array_get(jv j, int idx) {
jv jv_array_set(jv j, int idx, jv val) {
assert(jv_get_kind(j) == JV_KIND_ARRAY);
// copy/free of val,j coalesced
*jvp_array_write(&j.val.complex, idx) = val;
jv* slot = jvp_array_write(&j.val.complex, idx);
jv_free(*slot);
*slot = val;
return j;
}

View File

@ -215,6 +215,14 @@ def id(x):x; 2000 as $x | def f(x):1 as $x | id([$x, x, x]); def g(x): 100 as $x
{"bar":42}
{"foo":42, "bar":42}
.foo |= .+1
{"foo": 42}
{"foo": 43}
.[0].a |= {"old":., "new":(.+1)}
[{"a":1,"b":2}]
[{"a":{"old":1, "new":2},"b":2}]
def inc(x): x |= .+1; inc(.[].a)
[{"a":1,"b":2},{"a":2,"b":4},{"a":7,"b":8}]
[{"a":2,"b":2},{"a":3,"b":4},{"a":8,"b":8}]