Andrew Eikum : oleaut32: Convert ITypeLibImpl to use standard linked list.
Alexandre Julliard
julliard at winehq.org
Wed Mar 16 12:22:41 CDT 2011
Module: wine
Branch: master
Commit: 22cc5471564a2d5edc2e77e7b823fceb2aafa271
URL: http://source.winehq.org/git/wine.git/?a=commit;h=22cc5471564a2d5edc2e77e7b823fceb2aafa271
Author: Andrew Eikum <aeikum at codeweavers.com>
Date: Tue Mar 15 15:52:49 2011 -0500
oleaut32: Convert ITypeLibImpl to use standard linked list.
---
dlls/oleaut32/typelib.c | 15 ++++++---------
1 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c
index 7d5b85a..2e286b4 100644
--- a/dlls/oleaut32/typelib.c
+++ b/dlls/oleaut32/typelib.c
@@ -1010,7 +1010,7 @@ typedef struct tagITypeLibImpl
/* typelibs are cached, keyed by path and index, so store the linked list info within them */
- struct tagITypeLibImpl *next, *prev;
+ struct list entry;
WCHAR *path;
INT index;
} ITypeLibImpl;
@@ -2443,7 +2443,7 @@ static ITypeInfoImpl * MSFT_DoTypeInfo(
* place. This will cause a deliberate memory leak, but generally losing RAM for cycles is an acceptable
* tradeoff here.
*/
-static ITypeLibImpl *tlb_cache_first;
+static struct list tlb_cache = LIST_INIT(tlb_cache);
static CRITICAL_SECTION cache_section;
static CRITICAL_SECTION_DEBUG cache_section_debug =
{
@@ -2905,7 +2905,7 @@ static HRESULT TLB_ReadTypeLib(LPCWSTR pszFileName, LPWSTR pszPath, UINT cchPath
/* We look the path up in the typelib cache. If found, we just addref it, and return the pointer. */
EnterCriticalSection(&cache_section);
- for (entry = tlb_cache_first; entry != NULL; entry = entry->next)
+ LIST_FOR_EACH_ENTRY(entry, &tlb_cache, ITypeLibImpl, entry)
{
if (!strcmpiW(entry->path, pszPath) && entry->index == index)
{
@@ -2956,9 +2956,7 @@ static HRESULT TLB_ReadTypeLib(LPCWSTR pszFileName, LPWSTR pszPath, UINT cchPath
/* FIXME: check if it has added already in the meantime */
EnterCriticalSection(&cache_section);
- if ((impl->next = tlb_cache_first) != NULL) impl->next->prev = impl;
- impl->prev = NULL;
- tlb_cache_first = impl;
+ list_add_head(&tlb_cache, &impl->entry);
LeaveCriticalSection(&cache_section);
ret = S_OK;
} else
@@ -4255,9 +4253,8 @@ static ULONG WINAPI ITypeLib2_fnRelease( ITypeLib2 *iface)
{
TRACE("removing from cache list\n");
EnterCriticalSection(&cache_section);
- if (This->next) This->next->prev = This->prev;
- if (This->prev) This->prev->next = This->next;
- else tlb_cache_first = This->next;
+ if(This->entry.next)
+ list_remove(&This->entry);
LeaveCriticalSection(&cache_section);
heap_free(This->path);
}
More information about the wine-cvs
mailing list