Skip to content

Commit

Permalink
fixed borrow-checking for jv_array_set
Browse files Browse the repository at this point in the history
  • Loading branch information
MaxBrandtner committed Feb 29, 2024
1 parent 791b76d commit bec0858
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 1 deletion.
6 changes: 6 additions & 0 deletions src/jq_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -586,5 +586,11 @@ static void jv_test() {
jv other = jv_string_append_buf(jv_borrow(string), "test", 4);
assert(jv_equal(string, jv_string("value")));
assert(jv_equal(other, jv_string("valuetest")));

array = JV_ARRAY(jv_string("test"));
jv array_out = jv_array_set(jv_borrow(array), 0, jv_string("value"));
assert(jv_equal(array, JV_ARRAY(jv_string("test"))));
assert(!jv_is_borrowed(array_out));
jv_free(array_out);
}
}
4 changes: 3 additions & 1 deletion src/jv.c
Original file line number Diff line number Diff line change
Expand Up @@ -867,7 +867,7 @@ static jv* jvp_array_write(jv* a, int i) {
int j;
for (j = 0; j < jvp_array_length(*a); j++) {
new_array->elements[j] =
jv_unborrow(array->elements[j + jvp_array_offset(*a)]);
jv_copy(array->elements[j + jvp_array_offset(*a)]);
}
for (; j < new_length; j++) {
new_array->elements[j] = JV_NULL;
Expand Down Expand Up @@ -990,6 +990,8 @@ jv jv_array_get(jv j, int idx) {
jv jv_array_set(jv j, int idx, jv val) {
assert(JVP_HAS_KIND(j, JV_KIND_ARRAY));

j = jv_return(j);

if (idx < 0)
idx = jvp_array_length(j) + idx;
if (idx < 0) {
Expand Down

0 comments on commit bec0858

Please sign in to comment.