]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - zone.c
strip proquake QC messages if in Quake protocol
[xonotic/darkplaces.git] / zone.c
diff --git a/zone.c b/zone.c
index 0326b06d069747e13c2d5c6022d92b6069e415a5..889adc9d0c86bc54bb9c2eb97bb5451fa88452ad 100644 (file)
--- a/zone.c
+++ b/zone.c
@@ -84,6 +84,9 @@ cvar_t developer_memorydebug = {0, "developer_memorydebug", "0", "enables memory
 
 static mempool_t *poolchain = NULL;
 
+void Mem_PrintStats(void);
+void Mem_PrintList(size_t minallocationsize);
+
 #if MEMCLUMPING != 2
 // some platforms have a malloc that returns NULL but succeeds later
 // (Windows growing its swapfile for example)
@@ -324,8 +327,8 @@ void *_Mem_Alloc(mempool_t *pool, void *olddata, size_t size, size_t alignment,
        }
        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, (int)size);
+       if (developer_memory.integer)
+               Con_DPrintf("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;
@@ -333,7 +336,13 @@ void *_Mem_Alloc(mempool_t *pool, void *olddata, size_t size, size_t alignment,
        pool->realsize += realsize;
        base = (unsigned char *)Clump_AllocBlock(realsize);
        if (base== NULL)
+       {
+               Mem_PrintList(0);
+               Mem_PrintStats();
+               Mem_PrintList(1<<30);
+               Mem_PrintStats();
                Sys_Error("Mem_Alloc: out of memory (alloc at %s:%i)", filename, fileline);
+       }
        // calculate address that aligns the end of the memheader_t to the specified alignment
        mem = (memheader_t*)((((size_t)base + sizeof(memheader_t) + (alignment-1)) & ~(alignment-1)) - sizeof(memheader_t));
        mem->baseaddress = (void*)base;
@@ -388,8 +397,8 @@ static void _Mem_FreeBlock(memheader_t *mem, const char *filename, int fileline)
                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, (int)(mem->size));
+       if (developer_memory.integer)
+               Con_DPrintf("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);
@@ -415,7 +424,7 @@ void _Mem_Free(void *data, const char *filename, int fileline)
                return;
        }
 
-       if (developer.integer && developer_memorydebug.integer)
+       if (developer_memorydebug.integer)
        {
                //_Mem_CheckSentinelsGlobal(filename, fileline);
                if (!Mem_IsAllocated(NULL, data))
@@ -428,11 +437,17 @@ void _Mem_Free(void *data, const char *filename, int fileline)
 mempool_t *_Mem_AllocPool(const char *name, int flags, mempool_t *parent, const char *filename, int fileline)
 {
        mempool_t *pool;
-       //if (developer.integer && developer_memorydebug.integer)
-       //      _Mem_CheckSentinelsGlobal(filename, fileline);
+       if (developer_memorydebug.integer)
+               _Mem_CheckSentinelsGlobal(filename, fileline);
        pool = (mempool_t *)Clump_AllocBlock(sizeof(mempool_t));
        if (pool == NULL)
+       {
+               Mem_PrintList(0);
+               Mem_PrintStats();
+               Mem_PrintList(1<<30);
+               Mem_PrintStats();
                Sys_Error("Mem_AllocPool: out of memory (allocpool at %s:%i)", filename, fileline);
+       }
        memset(pool, 0, sizeof(mempool_t));
        pool->sentinel1 = MEMHEADER_SENTINEL_FOR_ADDRESS(&pool->sentinel1);
        pool->sentinel2 = MEMHEADER_SENTINEL_FOR_ADDRESS(&pool->sentinel2);
@@ -454,8 +469,8 @@ void _Mem_FreePool(mempool_t **poolpointer, const char *filename, int fileline)
        mempool_t *pool = *poolpointer;
        mempool_t **chainaddress, *iter, *temp;
 
-       //if (developer.integer && developer_memorydebug.integer)
-       //      _Mem_CheckSentinelsGlobal(filename, fileline);
+       if (developer_memorydebug.integer)
+               _Mem_CheckSentinelsGlobal(filename, fileline);
        if (pool)
        {
                // unlink pool from chain
@@ -488,7 +503,7 @@ void _Mem_EmptyPool(mempool_t *pool, const char *filename, int fileline)
 {
        mempool_t *chainaddress;
 
-       if (developer.integer && developer_memorydebug.integer)
+       if (developer_memorydebug.integer)
        {
                //_Mem_CheckSentinelsGlobal(filename, fileline);
                // check if this pool is in the poolchain
@@ -749,7 +764,7 @@ void Mem_PrintList(size_t minallocationsize)
                   "size    name\n");
        for (pool = poolchain;pool;pool = pool->next)
        {
-               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" : "");
+               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;
                for (mem = pool->chain;mem;mem = mem->next)
                        if (mem->size >= minallocationsize)