.foo[-1] = ... trips assertion (fix #490)

This commit is contained in:
Nicolas Williams committed 2014-08-09 13:10:41 -05:00
1 parent 8cddb7c681
commit 2d1a75f550
2 files changed
+25 -1

No files matched your search

+5 -1
View File
@@ -230,9 +230,13 @@ static jv* jvp_array_read(jv a, int i) {
}
static jv* jvp_array_write(jv* a, int i) {
assert(i >= 0);
jvp_array* array = jvp_array_ptr(*a);
if (i < 0)
i = array->length + i;
if (i < 0)
i = 0;
int pos = i + jvp_array_offset(*a);
if (pos < array->alloc_length && jvp_refcnt_unshared(a->u.ptr)) {
// use existing array space
+20
View File
@@ -152,6 +152,26 @@ null
[1,null,true,false,"abcdef",{},{"a":1,"b":2},[],[1,2,3,4,5],[1,2]]
[null,"bc",[],[2,3],[2]]
#
# Negative array indices
#
.foo[-1] = 0
null
{"foo":[0]}
.foo[-2] = 0
null
{"foo":[0]}
.[-1] = 5
[0,1,2]
[0,1,5]
.[-2] = 5
[0,1,2]
[0,5,2]
#
# Multiple outputs, iteration
#