Fix a memory leak in JV and add more tests
This commit is contained in:
1 parent
eea05ff924
commit
32e324a283
2 files changed
+11
-1
No files matched your search
@@ -240,7 +240,9 @@ jv jv_array_get(jv j, int idx) {
|
|||||||
jv jv_array_set(jv j, int idx, jv val) {
|
jv jv_array_set(jv j, int idx, jv val) {
|
||||||
assert(jv_get_kind(j) == JV_KIND_ARRAY);
|
assert(jv_get_kind(j) == JV_KIND_ARRAY);
|
||||||
// copy/free of val,j coalesced
|
// 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;
|
return j;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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}
|
{"bar":42}
|
||||||
{"foo":42, "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)
|
def inc(x): x |= .+1; inc(.[].a)
|
||||||
[{"a":1,"b":2},{"a":2,"b":4},{"a":7,"b":8}]
|
[{"a":1,"b":2},{"a":2,"b":4},{"a":7,"b":8}]
|
||||||
[{"a":2,"b":2},{"a":3,"b":4},{"a":8,"b":8}]
|
[{"a":2,"b":2},{"a":3,"b":4},{"a":8,"b":8}]
|
||||||
|
|||||||
Reference in new issue
Block a user