311
311
unsigned char *ptr = (unsigned char *) p - MEM_DEBUG_HDR_SIZE;
312
312
MemoryDebugPtr debug_ptr = (MemoryDebugPtr) ptr;
313
313
size_t size = debug_ptr->size;
317
318
if (!ASSERT(((size_t) p & 1L) == 0))
320
321
if (debug_ptr->check == MEM_FREED) {
321
322
mm_println("MM ERROR: Pointer already freed 'debug_ptr->check != MEM_FREED'");
325
326
if (debug_ptr->check != MEM_HEADER) {
326
327
mm_println("MM ERROR: Header not valid 'debug_ptr->check != MEM_HEADER'");
330
331
if (!(*((unsigned char *) ptr + size + MEM_DEBUG_HDR_SIZE) == MEM_TRAILER_BYTE &&
331
332
*((unsigned char *) ptr + size + MEM_DEBUG_HDR_SIZE + 1L) == MEM_TRAILER_BYTE)) {
332
333
mm_throw_assertion(mm_ptr, p, "Trailer overwritten");