.foo[-1] = ... trips assertion (fix #490)
This commit is contained in:
1 parent
8cddb7c681
commit
2d1a75f550
2 files changed
+25
-1
No files matched your search
@@ -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
|
||||
|
||||
@@ -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
|
||||
#
|
||||
|
||||
Reference in new issue
Block a user