if (pool == NULL)
Sys_Error("Mem_Alloc: pool == NULL (alloc at %s:%i)", filename, fileline);
if (developer.integer && developer_memory.integer)
- Con_Printf("Mem_Alloc: pool %s, file %s:%i, size %i bytes\n", pool->name, filename, fileline, size);
+ Con_Printf("Mem_Alloc: pool %s, file %s:%i, size %i bytes\n", pool->name, filename, fileline, (int)size);
if (developer.integer && developer_memorydebug.integer)
_Mem_CheckSentinelsGlobal(filename, fileline);
pool->totalsize += size;
Sys_Error("Mem_Free: trashed header sentinel 2 (alloc at %s:%i, free at %s:%i)", mem->filename, mem->fileline, filename, fileline);
pool = mem->pool;
if (developer.integer && developer_memory.integer)
- Con_Printf("Mem_Free: pool %s, alloc %s:%i, free %s:%i, size %i bytes\n", pool->name, mem->filename, mem->fileline, filename, fileline, mem->size);
+ Con_Printf("Mem_Free: pool %s, alloc %s:%i, free %s:%i, size %i bytes\n", pool->name, mem->filename, mem->fileline, filename, fileline, (int)(mem->size));
// unlink memheader from doubly linked list
if ((mem->prev ? mem->prev->next != mem : pool->chain != mem) || (mem->next && mem->next->prev != mem))
Sys_Error("Mem_Free: not allocated or double freed (free at %s:%i)", filename, fileline);
{
#endif
pool->realsize -= sizeof(memheader_t) + mem->size + sizeof(int);
- if (developer.integer)
+ if (developer_memorydebug.integer)
memset(mem, 0xBF, sizeof(memheader_t) + mem->size + sizeof(int));
free(mem);
#if MEMCLUMPING
}
}
-void Mem_PrintList(int listallocations)
+void Mem_PrintList(size_t minallocationsize)
{
mempool_t *pool;
memheader_t *mem;
{
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;
- if (listallocations)
- for (mem = pool->chain;mem;mem = mem->next)
+ for (mem = pool->chain;mem;mem = mem->next)
+ if (mem->size >= minallocationsize)
Con_Printf("%10lu bytes allocated at %s:%i\n", (unsigned long)mem->size, mem->filename, mem->fileline);
}
}
switch(Cmd_Argc())
{
case 1:
- Mem_PrintList(false);
+ Mem_PrintList(1<<30);
Mem_PrintStats();
break;
case 2:
- if (!strcmp(Cmd_Argv(1), "all"))
- {
- Mem_PrintList(true);
- Mem_PrintStats();
- break;
- }
- // drop through
+ Mem_PrintList(atoi(Cmd_Argv(1)) * 1024);
+ Mem_PrintStats();
+ break;
default:
Con_Print("MemList_f: unrecognized options\nusage: memlist [all]\n");
break;
void Memory_Init_Commands (void)
{
Cmd_AddCommand ("memstats", MemStats_f, "prints memory system statistics");
- Cmd_AddCommand ("memlist", MemList_f, "prints memory pool information (and individual allocations if used as memlist all)");
+ Cmd_AddCommand ("memlist", MemList_f, "prints memory pool information (or if used as memlist 5 lists individual allocations of 5K or larger, 0 lists all allocations)");
Cvar_RegisterVariable (&developer_memory);
Cvar_RegisterVariable (&developer_memorydebug);
}