diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/memory.cpp | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/src/memory.cpp b/src/memory.cpp index 064cad4..ee99fc8 100644 --- a/src/memory.cpp +++ b/src/memory.cpp @@ -34,6 +34,7 @@ void DestroyBucket(MemBucket *bkt) { } void *Pke_New(std::size_t sz, MemBucket *bkt) { + assert(bkt->head + sz <= bkt->size && "memory bucket specified, but full"); void *ptr = bkt->ptr + bkt->head; bkt->head += sz; bkt->allocs++; @@ -54,7 +55,7 @@ void *Pke_New(std::size_t sz) { } void Pke_Delete(const void *ptr, std::size_t sz, MemBucket *bkt) { - assert(ptr >= bkt->ptr && ptr < bkt->ptr + bkt->size && "pointer not in bucket range"); + assert(ptr >= bkt->ptr && ptr < bkt->ptr + bkt->size && "pointer not in memory bucket range"); bkt->allocs--; bkt->free += sz; if (ptr == bkt->ptr + bkt->head - sz) bkt->head -= sz; @@ -70,10 +71,7 @@ void Pke_Delete(const void *ptr, std::size_t sz) { bkt = &buckets[i]; if (ptr >= bkt->ptr && ptr < bkt->ptr + bkt->size) break; } - if (bkt == nullptr) { - std::printf("bad pointer %llu", reinterpret_cast<unsigned long long>(ptr)); - throw "bad pointer"; - } + assert(bkt != nullptr && "failed to determine correct memory bucket"); Pke_Delete(ptr, sz, bkt); } |
