diff --git a/glave-generate.py b/glave-generate.py
index 75ad624..73ead36 100755
--- a/glave-generate.py
+++ b/glave-generate.py
@@ -332,7 +332,7 @@
         um_body.append('        entry->pData = NULL;')
         um_body.append('    } else')
         um_body.append('    {')
-        um_body.append('         glv_LogError("Failed to copy app memory into trace packet (idx = %u) on xglUnmapMemory\n", pHeader->global_packet_index);')
+        um_body.append('         glv_LogError("Failed to copy app memory into trace packet (idx = %u) on xglUnmapMemory\\n", pHeader->global_packet_index);')
         um_body.append('    }')
         um_body.append('    result = real_xglUnmapMemory(mem);')
         um_body.append('    pPacket->mem = mem;')
@@ -751,7 +751,7 @@
         hf_body.append('static void init_mem_info()')
         hf_body.append('{')
         hf_body.append('    g_memInfo.numEntrys = 0;')
-        hf_body.append('    g_memInfo.capacity = 1024;')
+        hf_body.append('    g_memInfo.capacity = 4096;')
         hf_body.append('    g_memInfo.pLastMapped = NULL;')
         hf_body.append('')
         hf_body.append('    g_memInfo.pEntrys = GLV_NEW_ARRAY(XGLAllocInfo, g_memInfo.capacity);')
@@ -779,28 +779,32 @@
         hf_body.append('    XGLAllocInfo *entry;')
         hf_body.append('    if (g_memInfo.numEntrys > g_memInfo.capacity)')
         hf_body.append('    {')
-        hf_body.append('        glv_LogError("get_mem_info_entry() bad internal state numEntrys\\n");')
+        hf_body.append('        glv_LogError("get_mem_info_entry() bad internal state numEntrys %u\\n", g_memInfo.numEntrys);')
         hf_body.append('        return NULL;')
         hf_body.append('    }')
         hf_body.append('')
+        hf_body.append('    entry = g_memInfo.pEntrys;')
+        hf_body.append('    for (i = 0; i < g_memInfo.numEntrys; i++)')
+        hf_body.append('    {')
+        hf_body.append('        if ((entry + i)->valid == FALSE)')
+        hf_body.append('            return entry + i;')
+        hf_body.append('    }')
         hf_body.append('    if (g_memInfo.numEntrys == g_memInfo.capacity)')
         hf_body.append('    {  // grow the array 2x')
         hf_body.append('        g_memInfo.capacity *= 2;')
         hf_body.append('        g_memInfo.pEntrys = (XGLAllocInfo *) GLV_REALLOC(g_memInfo.pEntrys, g_memInfo.capacity * sizeof(XGLAllocInfo));')
+        hf_body.append('        if (g_memInfo.pEntrys == NULL)')
+        hf_body.append('            glv_LogError("get_mem_info_entry() realloc failed\\n");')
+        hf_body.append('        //glv_LogInfo("realloc memInfo from %u to %u\\n", g_memInfo.capacity /2, g_memInfo.capacity);')
         hf_body.append('        //init the newly added entrys')
         hf_body.append('        init_mem_info_entrys(g_memInfo.pEntrys + g_memInfo.capacity / 2, g_memInfo.capacity / 2);')
         hf_body.append('    }')
         hf_body.append('')
         hf_body.append('    assert(g_memInfo.numEntrys < g_memInfo.capacity);')
-        hf_body.append('    entry = g_memInfo.pEntrys;')
-        hf_body.append('    for (i = 0; i < g_memInfo.capacity; i++)')
-        hf_body.append('    {')
-        hf_body.append('        if ((entry + i)->valid == FALSE)')
-        hf_body.append('            return entry + i;')
-        hf_body.append('    }')
-        hf_body.append('')
-        hf_body.append('    glv_LogError("get_mem_info_entry() did not find an entry\\n");')
-        hf_body.append('    return NULL;')
+        hf_body.append('    entry = g_memInfo.pEntrys + g_memInfo.numEntrys;')
+        hf_body.append('    g_memInfo.numEntrys++;')
+        hf_body.append('    assert(entry->valid == FALSE);')
+        hf_body.append('    return entry;')
         hf_body.append('}')
         hf_body.append('')
         hf_body.append('// caller must hold the g_memInfoLock')
@@ -848,7 +852,6 @@
         hf_body.append('        entry->handle = handle;')
         hf_body.append('        entry->size = size;')
         hf_body.append('        entry->pData = pData;   // NOTE: xglFreeMemory will free this mem, so no malloc()')
-        hf_body.append('        g_memInfo.numEntrys++;')
         hf_body.append('    }')
         hf_body.append('    glv_leave_critical_section(&g_memInfoLock);')
         hf_body.append('}')
@@ -880,7 +883,7 @@
         hf_body.append('        entry->size = 0;')
         hf_body.append('        entry->handle = NULL;')
         hf_body.append('')
-        hf_body.append('        g_memInfo.numEntrys--;')
+        hf_body.append('        //TODO go thru array and set numEntrys based on last valid entry g_memInfo.numEntrys--;')
         hf_body.append('        if (entry == g_memInfo.pLastMapped)')
         hf_body.append('            g_memInfo.pLastMapped = NULL;')
         hf_body.append('        if (g_memInfo.numEntrys == 0)')
