27 xht pool__disturbed = NULL;
39 #define _pool__malloc malloc
40 #define _pool__free free
56 snprintf(p->zone,
sizeof(p->zone),
"%s:%i", zone, line);
57 sprintf(p->name,
"%X",(
int)p);
59 if(pool__disturbed == NULL)
61 pool__disturbed = (
xht)1;
64 if(pool__disturbed != (
xht)1)
147 fprintf(stderr,
"Memory Leak! [pmalloc received NULL pool, unable to track allocation, exiting]\n");
176 void* result =
pmalloc(p, size);
178 memset(result, c, size);
185 void *block =
pmalloc(p, size);
186 memset(block, 0, size);
198 ret =
pmalloc(p,strlen(src) + 1);
209 if(src == NULL || len <= 0)
221 if(p == NULL)
return 0;
228 struct pfree *cur, *stub;
230 if(p == NULL)
return;
242 if (pool__disturbed != NULL && pool__disturbed != (
xht)1)
261 void _pool_stat(
const char *key,
int keylen,
void *val,
void *
arg)
266 fprintf(stderr,
"POOL: %s: %s is a new pool\n",p->zone,p->name);
267 else if(p->
size > p->lsize)
268 fprintf(stderr,
"POOL: %s: %s grew %d\n",p->zone,p->name, p->
size - p->lsize);
270 fprintf(stderr,
"POOL: %s: %s exists %d\n",p->zone,p->name, p->
size);
276 if (pool__disturbed == NULL || pool__disturbed == (
xht)1)
278 xhash_walk(pool__disturbed,_pool_stat,(
void *)full);
279 if(pool__total != pool__ltotal)
280 fprintf(stderr,
"POOL: %d total missed mallocs\n",pool__total);
281 pool__ltotal = pool__total;