diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2024-12-02 15:21:29 -0500 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2024-12-02 15:21:29 -0500 |
| commit | c6bcb05a4e2937374234dec05c6e8f30a711ebe9 (patch) | |
| tree | 121fdc873f5ab41ba060370740f772fcbab214e3 /stdlib/arrays.c | |
| parent | 44d8d553dfb307734a52a300cad3b44b9bdec7ae (diff) | |
Further bugfix for array concatenation
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){ |
