_Mem_FreeBlock((memheader_t *)((unsigned char *) data - sizeof(memheader_t)), filename, fileline);
}
-mempool_t *_Mem_AllocPool(const char *name, int flags, mempool_t *parent, const char *filename, int fileline)
+mempool_t *_Mem_AllocPool(const char *name, unsigned flags, mempool_t *parent, const char *filename, int fileline)
{
mempool_t *pool;
if (developer_memorydebug.integer)
List_Create(&pool->chain);
pool->totalsize = 0;
pool->realsize = sizeof(mempool_t);
- strlcpy (pool->name, name, sizeof (pool->name));
+ dp_strlcpy (pool->name, name, sizeof (pool->name));
pool->parent = parent;
pool->next = poolchain;
poolchain = pool;
Sys_Error("Mem_CheckSentinelsGlobal: trashed pool sentinel 2 (allocpool at %s:%i, sentinel check at %s:%i)", pool->filename, pool->fileline, filename, fileline);
}
for (pool = poolchain;pool;pool = pool->next)
- List_For_Each_Entry(mem, &pool->chain, list)
+ List_For_Each_Entry(mem, &pool->chain, memheader_t, list)
_Mem_CheckSentinels((void *)((unsigned char *) mem + sizeof(memheader_t)), filename, fileline);
#if MEMCLUMPING
for (pool = poolchain;pool;pool = pool->next)
#endif
}
-qbool Mem_IsAllocated(mempool_t *pool, void *data)
+qbool Mem_IsAllocated(mempool_t *pool, const void *data)
{
memheader_t *header;
memheader_t *target;
{
// search only one pool
target = (memheader_t *)((unsigned char *) data - sizeof(memheader_t));
- List_For_Each_Entry(header, &pool->chain, list)
+ List_For_Each_Entry(header, &pool->chain, memheader_t, list)
if( header == target )
return true;
}
{
if ((pool->flags & POOLFLAG_TEMP) && !List_Is_Empty(&pool->chain))
{
- Con_Printf("Memory pool %p has sprung a leak totalling %lu bytes (%.3fMB)! Listing contents...\n", (void *)pool, (unsigned long)pool->totalsize, pool->totalsize / 1048576.0);
- List_For_Each_Entry(mem, &pool->chain, list)
+ Con_Printf(CON_WARN "Memory pool %p has sprung a leak totalling %lu bytes (%.3fMB)! Listing contents...\n", (void *)pool, (unsigned long)pool->totalsize, pool->totalsize / 1048576.0);
+ List_For_Each_Entry(mem, &pool->chain, memheader_t, list)
Con_Printf("%10lu bytes allocated at %s:%i\n", (unsigned long)mem->size, mem->filename, mem->fileline);
}
}
{
Con_Printf("%10luk (%10luk actual) %s (%+li byte change) %s\n", (unsigned long) ((pool->totalsize + 1023) / 1024), (unsigned long)((pool->realsize + 1023) / 1024), pool->name, (long)(pool->totalsize - pool->lastchecksize), (pool->flags & POOLFLAG_TEMP) ? "TEMP" : "");
pool->lastchecksize = pool->totalsize;
- List_For_Each_Entry(mem, &pool->chain, list)
+ List_For_Each_Entry(mem, &pool->chain, memheader_t, list)
if (mem->size >= minallocationsize)
Con_Printf("%10lu bytes allocated at %s:%i\n", (unsigned long)mem->size, mem->filename, mem->fileline);
}
}
-char* _Mem_strdup (mempool_t *pool, const char* s, const char *filename, int fileline)
+char *_Mem_strdup(mempool_t *pool, const char *s, const char *filename, int fileline)
{
char* p;
size_t sz;
if (s == NULL)
return NULL;
sz = strlen (s) + 1;
- p = (char*)_Mem_Alloc (pool, NULL, sz, 16, filename, fileline);
- strlcpy (p, s, sz);
+ p = (char*)_Mem_Alloc (pool, NULL, sz, alignof(char), filename, fileline);
+ dp_strlcpy (p, s, sz);
return p;
}