dbghelp: Directly use Heap functions.

Eric Pouech eric.pouech at wanadoo.fr
Mon Apr 30 04:15:46 CDT 2007


Markus Amsler a écrit :
> Dmitry Timoshkov wrote:
>> The old code at least bothered to actually free some memory.
> Good point. I wasn't  aware that some memory is only temporarily used. 
> I'm going to rework it.
>
> Markus
>
>
>
>
does this patch gives you lots of improvements ?
A+

-- 
Eric Pouech
"The problem with designing something completely foolproof is to underestimate the ingenuity of a complete idiot." (Douglas Adams)

-------------- next part --------------
diff --git a/dlls/dbghelp/storage.c b/dlls/dbghelp/storage.c
index e196143..c3ccaf5 100644
--- a/dlls/dbghelp/storage.c
+++ b/dlls/dbghelp/storage.c
@@ -73,30 +73,28 @@ void pool_destroy(struct pool* pool)
 
 void* pool_alloc(struct pool* pool, unsigned len)
 {
-    struct pool_arena** parena;
     struct pool_arena*  arena;
     void*               ret;
 
     len = (len + 3) & ~3; /* round up size on DWORD boundary */
     assert(sizeof(struct pool_arena) + len <= pool->arena_size && len);
 
-    for (parena = &pool->first; *parena; parena = &(*parena)->next)
+    for (arena = pool->first; arena; arena = arena->next)
     {
-        if ((char*)(*parena) + pool->arena_size - (*parena)->current >= len)
+        if ((char*)arena + pool->arena_size - arena->current >= len)
         {
-            ret = (*parena)->current;
-            (*parena)->current += len;
+            ret = arena->current;
+            arena->current += len;
             return ret;
         }
     }
- 
+
     arena = HeapAlloc(GetProcessHeap(), 0, pool->arena_size);
     if (!arena) {FIXME("OOM\n");return NULL;}
 
-    *parena = arena;
-
     ret = (char*)arena + sizeof(*arena);
-    arena->next = NULL;
+    arena->next = pool->first;
+    pool->first = arena;
     arena->current = (char*)ret + len;
     return ret;
 }


More information about the wine-devel mailing list