diff options
Diffstat (limited to 'stdlib/arrays.c')
| -rw-r--r-- | stdlib/arrays.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/stdlib/arrays.c b/stdlib/arrays.c index c8d7777c..c740a1c7 100644 --- a/stdlib/arrays.c +++ b/stdlib/arrays.c @@ -485,11 +485,12 @@ public Array_t Array$concat(Array_t x, Array_t y, int64_t padded_item_size) memcpy(data + i*padded_item_size, x.data + i*padded_item_size, (size_t)padded_item_size); } + void *dest = data + padded_item_size*x.length; if (y.stride == padded_item_size) { - memcpy(data + padded_item_size*x.length, y.data, (size_t)(padded_item_size*y.length)); + memcpy(dest, y.data, (size_t)(padded_item_size*y.length)); } else { for (int64_t i = 0; i < y.length; i++) - memcpy(data + (x.length + i)*padded_item_size, y.data + i*padded_item_size, (size_t)padded_item_size); + memcpy(dest + i*padded_item_size, y.data + i*y.stride, (size_t)padded_item_size); } return (Array_t){ |
