summaryrefslogtreecommitdiff
path: root/src/memory.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2023-08-08 21:55:36 -0400
committerJonathan Bradley <jcb@pikum.xyz>2023-08-08 22:00:36 -0400
commit0e49a248c94c55b918eb5ebc4224a75735cfba9c (patch)
tree6bb99f9d0d407154a70b7103b037fd377e853754 /src/memory.cpp
parent1d3bfd616e1b00c0510d9ac00e6e9ee6b6daab83 (diff)
memory assert bucket and check the ptr itself
Diffstat (limited to 'src/memory.cpp')
-rw-r--r--src/memory.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/memory.cpp b/src/memory.cpp
index abaea00..716c6a6 100644
--- a/src/memory.cpp
+++ b/src/memory.cpp
@@ -42,6 +42,7 @@ void *pke::PkeNew(std::size_t sz) {
}
void pke::PkeDelete(const void *ptr, std::size_t sz, pke::MemBucket *bkt) {
+ assert(ptr >= bkt->ptr && ptr < bkt->ptr + bkt->size && "pointer not in bucket range");
bkt->allocs--;
bkt->free += sz;
if (ptr == bkt->ptr + bkt->head - sz) bkt->head -= sz;
@@ -55,7 +56,7 @@ void pke::PkeDelete(const void *ptr, std::size_t sz) {
pke::MemBucket *bkt = nullptr;
for (long i = 0; i < bucketHead; ++i) {
bkt = &buckets[i];
- if (ptr > bkt->ptr && ptr < bkt->ptr + bkt->size) break;
+ if (ptr >= bkt->ptr && ptr < bkt->ptr + bkt->size) break;
}
if (bkt == nullptr) {
std::printf("bad pointer %llu", reinterpret_cast<unsigned long long>(ptr));