diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-01-14 18:17:54 -0500 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-01-14 18:17:54 -0500 |
| commit | 5a7b4a65a1d93744e4a5e6cc6df4244f61b81f68 (patch) | |
| tree | 4b59cb1d6e513c1caefdc7e4c35955741bcfe206 /src/array.hpp | |
| parent | 80a67230fe192287503092a3d256aea3a494409c (diff) | |
chore: fix compiler warnings + extra includes
Diffstat (limited to 'src/array.hpp')
| -rw-r--r-- | src/array.hpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/array.hpp b/src/array.hpp index a1fa69f..c8a9cb6 100644 --- a/src/array.hpp +++ b/src/array.hpp @@ -45,9 +45,21 @@ inline void PkeArray_Add(PkeArray_Base *arrIn, const D &val, struct pk_membucket diff = arr->reserved - originalCount; } auto *newData = pk_new<D>(arr->reserved, bkt); - memset(newData + (sizeof(D) * originalCount), 0xFF, sizeof(D) * diff); + if constexpr (std::is_trivial<D>::value) { + memset(newData + (sizeof(D) * originalCount), 0x00, sizeof(D) * diff); + } else { + for (int64_t i = originalCount; i < arr->reserved; ++i) { + newData[i] = {}; + } + } if (arr->data != nullptr && arr->data != CAFE_BABE(D)) { - memcpy(newData, arr->data, sizeof(D) * originalCount); + if constexpr (std::is_trivial<D>::value) { + memcpy(newData, arr->data, sizeof(D) * originalCount); + } else { + for (int64_t i = 0; i < diff; ++i) { + newData[i] = arr->data[i]; + } + } pk_delete<D>(arr->data, originalCount, bkt); } arr->data = newData; |
