struct nsmpool nsmpools[MAXPOOL];
-#ifndef USE_VALGRIND
+#ifndef USE_NSMALLOC_VALGRIND
void *nsmalloc(unsigned int poolid, size_t size) {
struct nsminfo *nsmp;
void nsfree(unsigned int poolid, void *ptr) {
struct nsminfo *nsmp;
- if (poolid >= MAXPOOL)
+ if (!ptr || poolid >= MAXPOOL)
return;
/* evil */
return;
if (nsmpools[poolid].first.next) {
- Error("core",ERR_INFO,"nsmalloc: Blocks still allocated in pool #%d (%s): %lub, %lu items",poolid,nsmpoolnames[poolid]?nsmpoolnames[poolid]:"??",nsmpools[poolid].size,nsmpools[poolid].count);
+ Error("core",ERR_INFO,"nsmalloc: Blocks still allocated in pool #%d (%s): %zub, %lu items",poolid,nsmpoolnames[poolid]?nsmpoolnames[poolid]:"??",nsmpools[poolid].size,nsmpools[poolid].count);
nsfreeall(poolid);
}
}
unsigned int i;
for (i=0;i<MAXPOOL;i++)
- nscheckfreeall(i);
+ nsfreeall(i);
}
#else
}
void nsfree(unsigned int poolid, void *ptr) {
- free(ptr);
+ if(ptr)
+ free(ptr);
}
void nsfreeall(unsigned int poolid) {