build/contrib/detpax/mempool.c | 16 +++++----------- diff --git a/build/contrib/detpax/mempool.c b/build/contrib/detpax/mempool.c index dc3bea3e1c043a8e19db67d18886577354bb89c1f57cfd6bcb079f65ff647c2b..757875cc0d451377557efa1b2c5b7b526df0b4f5332b687aa23232490c35033a 100644 --- a/build/contrib/detpax/mempool.c +++ b/build/contrib/detpax/mempool.c @@ -122,20 +122,15 @@ void KEKSMemPoolClear(struct KEKSMemPoolHdr *pool) // NOLINT(misc-no-recursion) { assert(pool != NULL); - const size_t chunkLen = keksMemPoolChunkSize(pool); + const size_t len = + hdrLen(pool->cap, pool->align) - (sizeof(struct KEKSMemPoolChunkHdr) - 8); struct KEKSMemPoolChunkHdr *chunk = pool->last; - struct KEKSMemPoolChunkHdr *prev = NULL; - struct KEKSMemPoolChunkHdr *next = NULL; while (chunk != NULL) { - prev = chunk->prev; - next = chunk->next; if (chunk->len != 0) { - memset(chunk, 0, chunkLen); - chunk->prev = prev; - chunk->next = next; - chunk->pool = pool; + chunk->len = 0; + memset(&(chunk->freelist), 0, len); } - chunk = prev; + chunk = chunk->prev; } pool->len = 0; } @@ -224,7 +219,6 @@ assert((hdr->freelist[i / 8] & ((size_t)1 << (i % 8))) != 0); hdr->freelist[i / 8] ^= (size_t)1 << (i % 8); hdr->len--; hdr->pool->len--; - memset(obj, 0, hdr->pool->size); return; } assert(hdr->prev != NULL);