"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "uppsrc/Core/heapdbg.cpp" between
upp-x11-src-13648.tar.gz and upp-x11-src-13659.tar.gz

About: Ultimate++ is a C++ cross-platform rapid application development framework. Stable release.

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

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)