Debug tools: new function MEM_testN(void*)

returns 0 if pointer is not in memlist
This commit is contained in:
Martin Poirier 2009-11-11 03:45:26 +00:00
parent f0fc007c4b
commit f7d7149936
2 changed files with 29 additions and 1 deletions

@ -73,6 +73,12 @@ extern "C" {
*/
short MEM_freeN(void *vmemh);
/**
* Return zero if memory is not in allocated list
*/
short MEM_testN(void *vmemh);
/**
* Duplicates a block of memory, and returns a pointer to the
* newly allocated block. */

@ -478,6 +478,29 @@ void MEM_callbackmemlist(void (*func)(void*)) {
mem_unlock_thread();
}
short MEM_testN(void *vmemh) {
MemHead *membl;
mem_lock_thread();
membl = membase->first;
if (membl) membl = MEMNEXT(membl);
while(membl) {
if (vmemh == membl+1)
return 1;
if(membl->next)
membl= MEMNEXT(membl->next);
else break;
}
mem_unlock_thread();
print_error("Memoryblock %p: pointer not in memlist\n", vmemh);
return 0;
}
void MEM_printmemlist( void ) {
MEM_printmemlist_internal(0);
}
@ -518,7 +541,6 @@ short MEM_freeN(void *vmemh) /* anders compileertie niet meer */
}
mem_lock_thread();
if ((memh->tag1 == MEMTAG1) && (memh->tag2 == MEMTAG2) && ((memh->len & 0x3) == 0)) {
memt = (MemTail *)(((char *) memh) + sizeof(MemHead) + memh->len);
if (memt->tag3 == MEMTAG3){