aboutsummaryrefslogtreecommitdiff
path: root/stdlib/arrays.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2024-12-02 15:21:29 -0500
committerBruce Hill <bruce@bruce-hill.com>2024-12-02 15:21:29 -0500
commitc6bcb05a4e2937374234dec05c6e8f30a711ebe9 (patch)
tree121fdc873f5ab41ba060370740f772fcbab214e3 /stdlib/arrays.c
parent44d8d553dfb307734a52a300cad3b44b9bdec7ae (diff)
Further bugfix for array concatenation
Diffstat (limited to 'stdlib/arrays.c')
-rw-r--r--stdlib/arrays.c5
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){