From b0e65d149f76c081d5840b4156b9a13516429732 Mon Sep 17 00:00:00 2001 From: Stephen Dolan Date: Mon, 13 May 2013 14:10:39 +0100 Subject: [PATCH] Fix a bug triggered by jv_array_slice. --- jq_test.c | 12 ++++++++++++ jv.c | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) 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]; } }