New function:
authorMartin Poirier <theeth@yahoo.com>
Tue, 10 Nov 2009 21:33:53 +0000 (21:33 +0000)
committerMartin Poirier <theeth@yahoo.com>
Tue, 10 Nov 2009 21:33:53 +0000 (21:33 +0000)
void MEM_callbackmemlist(void (*func)(void*));

Will call the function passed as argument with all allocated address as parameter. Useful for debuging.

intern/guardedalloc/MEM_guardedalloc.h
intern/guardedalloc/intern/mallocn.c

index 9e3927314d38962e9e0cb5e1ca44a746b2a226f7..74cc365140f60c5de60a7d107dc0bbee3a9f47a0 100644 (file)
@@ -102,6 +102,9 @@ extern "C" {
         * blocks. */ 
        void MEM_printmemlist(void);
 
+       /** calls the function on all allocated memory blocks. */
+       void MEM_callbackmemlist(void (*func)(void*));
+
        /** Print statistics about memory usage */
        void MEM_printmemlist_stats(void);
        
index ca7f2a4d5067bc97a443b411f93e106c0c76e73a..ecf89c894d249ae50eb51dc1e51f379f07ab0475 100644 (file)
@@ -460,6 +460,24 @@ static void MEM_printmemlist_internal( int pydict )
        mem_unlock_thread();
 }
 
+void MEM_callbackmemlist(void (*func)(void*)) {
+       MemHead *membl;
+
+       mem_lock_thread();
+
+       membl = membase->first;
+       if (membl) membl = MEMNEXT(membl);
+
+       while(membl) {
+               func(membl+1);
+               if(membl->next)
+                       membl= MEMNEXT(membl->next);
+               else break;
+       }
+
+       mem_unlock_thread();
+}
+
 void MEM_printmemlist( void ) {
        MEM_printmemlist_internal(0);
 }