diff options
-rw-r--r-- | ffi.c | 4 | ||||
-rw-r--r-- | tests/017/carray.tl | 16 |
2 files changed, 18 insertions, 2 deletions
@@ -5877,11 +5877,11 @@ val carray_replace(val carray, val values, val from, val to) } else if (newrange < oldrange) { cnum delta = oldrange - newrange; memmove(ptr + newrange, ptr + oldrange, tail); - memset(ptr + whole - delta, 0, delta); + memset(scry->data + whole - delta, 0, delta); } } - for (; fn < vn; fn++, ptr += elsize) { + for (; fn < sn; fn++, ptr += elsize) { val item = seq_geti(&item_iter); eltft->put(eltft, item, ptr, self); } diff --git a/tests/017/carray.tl b/tests/017/carray.tl new file mode 100644 index 00000000..1d450d1a --- /dev/null +++ b/tests/017/carray.tl @@ -0,0 +1,16 @@ +(load "../common") + +(let* ((bf (make-buf 16)) + (ca (carray-buf bf (ffi uchar)))) + (mtest + (buf-put-buf bf (make-buf 8 255) 8) #b'ffffffffffffffff' + bf #b'0000000000000000 ffffffffffffffff' + (carray-set-length ca 8) nil + (set [ca -1..10] #(1 2 3)) #(1 2 3) + bf #b'0000000000000001 ffffffffffffffff' + (set [ca 2..7] #(1 2 3)) #(1 2 3) + bf #b'0000010203010000 ffffffffffffffff' + (set [ca 3..4] #(10 11 12)) #(10 11 12) + bf #b'0000010A0B0C0301 ffffffffffffffff' + (set [ca 3..3] #(9)) #(9) + bf #b'000001090A0B0C03 ffffffffffffffff')) |