heapdbg.cpp (upp-x11-src-13648) | : | heapdbg.cpp (upp-x11-src-13659) | ||
---|---|---|---|---|
skipping to change at line 152 | skipping to change at line 152 | |||
DbgBlkHeader *p = (DbgBlkHeader *)ptr - 1; | DbgBlkHeader *p = (DbgBlkHeader *)ptr - 1; | |||
DbgCheck(p); | DbgCheck(p); | |||
p->Unlink(); | p->Unlink(); | |||
MemoryFree_(p); | MemoryFree_(p); | |||
} | } | |||
bool MemoryTryRealloc_(void *ptr, size_t& newsize); | bool MemoryTryRealloc_(void *ptr, size_t& newsize); | |||
bool MemoryTryRealloc__(void *ptr, size_t& newsize) | bool MemoryTryRealloc__(void *ptr, size_t& newsize) | |||
{ | { | |||
if(!ptr) return false; | if(!ptr || PanicMode) return false; | |||
Mutex::Lock __(sHeapLock2); | Mutex::Lock __(sHeapLock2); | |||
DbgBlkHeader *p = (DbgBlkHeader *)ptr - 1; | DbgBlkHeader *p = (DbgBlkHeader *)ptr - 1; | |||
DbgCheck(p); | DbgCheck(p); | |||
size_t sz = newsize; | size_t sz = newsize; | |||
sz += sizeof(DbgBlkHeader) + sizeof(dword); | sz += sizeof(DbgBlkHeader) + sizeof(dword); | |||
if(MemoryTryRealloc_((DbgBlkHeader *)ptr - 1, sz)) { | if(MemoryTryRealloc_((DbgBlkHeader *)ptr - 1, sz)) { | |||
newsize = sz - sizeof(DbgBlkHeader) - sizeof(dword); | newsize = sz - sizeof(DbgBlkHeader) - sizeof(dword); | |||
p->Unlink(); | p->Unlink(); | |||
DbgSet(p, newsize); | DbgSet(p, newsize); | |||
return true; | return true; | |||
skipping to change at line 182 | skipping to change at line 182 | |||
return ((DbgBlkHeader *)ptr - 1)->size; | return ((DbgBlkHeader *)ptr - 1)->size; | |||
} | } | |||
void *MemoryAlloc32() { return MemoryAlloc(32); } | void *MemoryAlloc32() { return MemoryAlloc(32); } | |||
void MemoryFree32(void *ptr) { return MemoryFree(ptr); } | void MemoryFree32(void *ptr) { return MemoryFree(ptr); } | |||
void *MemoryAlloc48() { return MemoryAlloc(48); } | void *MemoryAlloc48() { return MemoryAlloc(48); } | |||
void MemoryFree48(void *ptr) { return MemoryFree(ptr); } | void MemoryFree48(void *ptr) { return MemoryFree(ptr); } | |||
void MemoryCheckDebug() | void MemoryCheckDebug() | |||
{ | { | |||
if(PanicMode) | ||||
return; | ||||
MemoryCheck(); | MemoryCheck(); | |||
Mutex::Lock __(sHeapLock2); | Mutex::Lock __(sHeapLock2); | |||
DbgBlkHeader *p = dbg_live.next; | DbgBlkHeader *p = dbg_live.next; | |||
while(p != &dbg_live) { | while(p != &dbg_live) { | |||
if((dword)Peek32le((byte *)(p + 1) + p->size) != p->serial) | if((dword)Peek32le((byte *)(p + 1) + p->size) != p->serial) | |||
DbgHeapPanic("HEAP CHECK: Heap is corrupted ", p); | DbgHeapPanic("HEAP CHECK: Heap is corrupted ", p); | |||
p = p->next; | p = p->next; | |||
} | } | |||
while(p != &dbg_live); | while(p != &dbg_live); | |||
} | } | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 3 lines changed or added |