summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jq_test.c12
-rw-r--r--jv.c2
2 files changed, 13 insertions, 1 deletions
diff --git a/jq_test.c b/jq_test.c
index 19dccc22..c71fdc66 100644
--- a/jq_test.c
+++ b/jq_test.c
@@ -164,6 +164,18 @@ static void jv_test() {
jv_free(a3);
+ jv a4 = jv_array();
+ a4 = jv_array_append(a4, jv_number(1));
+ a4 = jv_array_append(a4, jv_number(2));
+ jv a5 = jv_copy(a4);
+ a4 = jv_array_append(a4, jv_number(3));
+ a4 = jv_array_slice(a4, 0, 1);
+ assert(jv_array_length(jv_copy(a4)) == 1);
+ a4 = jv_array_append(a4, jv_number(4));
+ assert(jv_array_length(a4) == 2);
+ assert(jv_array_length(a5) == 2);
+
+
assert(jv_array_length(jv_copy(a)) == 2);
assert(jv_number_value(jv_array_get(jv_copy(a), 0)) == 42);
assert(jv_array_length(jv_array_get(jv_copy(a), 1)) == 1);
diff --git a/jv.c b/jv.c
index 4ed623f0..b03c024c 100644
--- a/jv.c
+++ b/jv.c
@@ -214,7 +214,7 @@ static jv* jvp_array_write(jv_nontrivial* a, int i) {
array->elements[j] = JV_NULL;
}
array->length = imax(pos + 1, array->length);
- a->i[1] = imax(pos + 1, array->length);
+ a->i[1] = imax(pos + 1, a->i[1]);
return &array->elements[pos];
}
}