summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rendering/src/rendering.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/rendering/src/rendering.c b/src/rendering/src/rendering.c
index 0c1052a..06880fd 100644
--- a/src/rendering/src/rendering.c
+++ b/src/rendering/src/rendering.c
@@ -85,7 +85,21 @@ ShaderBuffer* shaderbuffer_cat(ShaderBuffer* dst, ShaderBuffer *restrict src) {
// Assume that we single-handedly control the pointer to the data, copy and
// free the stuff.
- //
+
+ // Verify the size
+ const isize sz_src = src->size_elem * src->count;
+ const isize sz_dst = dst->size_elem * dst->count;
+ if (sz_src + sz_dst >= dst->size) {
+ const isize sz_new = (1 + ((sz_src + sz_dst) / 4096)) * 4096;
+ // Resize dst size
+ dst->data = realloc(dst->data, sz_new);
+ dst->size = sz_new;
+ }
+
+ memcpy(dst->data + sz_dst, src->data, sz_src);
+
+ dst->count += src->count;
+
return dst;
}