aboutsummaryrefslogtreecommitdiff
path: root/src/array.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/array.cpp')
-rw-r--r--src/array.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/array.cpp b/src/array.cpp
index dc52eeb8d..db51e2bfb 100644
--- a/src/array.cpp
+++ b/src/array.cpp
@@ -103,12 +103,19 @@ Slice<T> slice_clone_from_array(gbAllocator const &allocator, Array<T> const &a)
template <typename T>
+void slice_copy(Slice<T> *slice, Slice<T> const &data) {
+ isize n = gb_min(slice->count, data.count);
+ gb_memmove(slice->data, data.data, gb_size_of(T)*n);
+}
+template <typename T>
void slice_copy(Slice<T> *slice, Slice<T> const &data, isize offset) {
- gb_memmove(slice->data+offset, data.data, gb_size_of(T)*data.count);
+ isize n = gb_clamp(slice->count-offset, 0, data.count);
+ gb_memmove(slice->data+offset, data.data, gb_size_of(T)*n);
}
template <typename T>
void slice_copy(Slice<T> *slice, Slice<T> const &data, isize offset, isize count) {
- gb_memmove(slice->data+offset, data.data, gb_size_of(T)*gb_min(data.count, count));
+ isize n = gb_clamp(slice->count-offset, 0, gb_min(data.count, count));
+ gb_memmove(slice->data+offset, data.data, gb_size_of(T)*n);
}