From bf464f81a8e71ddc6659b8776c4d4827896606f9 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Thu, 17 Oct 2013 11:10:05 +0200 Subject: [PATCH] crypt32: Share more code between memory store deleteContext implementations. --- dlls/crypt32/context.c | 16 ---------------- dlls/crypt32/crypt32_private.h | 6 ------ dlls/crypt32/store.c | 32 ++++++++++++++++++++++---------- 3 files changed, 22 insertions(+), 32 deletions(-) diff --git a/dlls/crypt32/context.c b/dlls/crypt32/context.c index 6a969436810..82b1021da62 100644 --- a/dlls/crypt32/context.c +++ b/dlls/crypt32/context.c @@ -110,22 +110,6 @@ void Context_CopyProperties(const void *to, const void *from) ContextPropertyList_Copy(toProperties, fromProperties); } -BOOL ContextList_Remove(ContextList *list, CRITICAL_SECTION *cs, context_t *context) -{ - BOOL inList = FALSE; - - EnterCriticalSection(cs); - if (!list_empty(&context->u.entry)) - { - list_remove(&context->u.entry); - list_init(&context->u.entry); - inList = TRUE; - } - LeaveCriticalSection(cs); - - return inList; -} - void ContextList_Free(ContextList *list) { context_t *context, *next; diff --git a/dlls/crypt32/crypt32_private.h b/dlls/crypt32/crypt32_private.h index 3a6d9d550db..dc66ebfda44 100644 --- a/dlls/crypt32/crypt32_private.h +++ b/dlls/crypt32/crypt32_private.h @@ -438,12 +438,6 @@ void ContextPropertyList_Free(CONTEXT_PROPERTY_LIST *list) DECLSPEC_HIDDEN; */ typedef struct list ContextList; -/* Removes a context from the list. Returns TRUE if the context was removed, - * or FALSE if not. (The context may have been duplicated, so subsequent - * removes have no effect.) - */ -BOOL ContextList_Remove(ContextList *list, CRITICAL_SECTION *cs, context_t *context) DECLSPEC_HIDDEN; - void ContextList_Free(ContextList *list) DECLSPEC_HIDDEN; extern WINECRYPT_CERTSTORE empty_store; diff --git a/dlls/crypt32/store.c b/dlls/crypt32/store.c index bf9c88e4fb4..76ba9449431 100644 --- a/dlls/crypt32/store.c +++ b/dlls/crypt32/store.c @@ -198,6 +198,22 @@ static context_t *MemStore_enumContext(WINE_MEMSTORE *store, struct list *list, return ret; } +static BOOL MemStore_deleteContext(WINE_MEMSTORE *store, context_t *context) +{ + BOOL in_list = FALSE; + + EnterCriticalSection(&store->cs); + if (!list_empty(&context->u.entry)) { + list_remove(&context->u.entry); + list_init(&context->u.entry); + in_list = TRUE; + } + LeaveCriticalSection(&store->cs); + + if(in_list) + Context_Release(context); + return TRUE; +} static BOOL MemStore_addCert(WINECRYPT_CERTSTORE *store, context_t *cert, context_t *toReplace, context_t **ppStoreContext, BOOL use_link) @@ -205,7 +221,6 @@ static BOOL MemStore_addCert(WINECRYPT_CERTSTORE *store, context_t *cert, WINE_MEMSTORE *ms = (WINE_MEMSTORE *)store; TRACE("(%p, %p, %p, %p)\n", store, cert, toReplace, ppStoreContext); - return MemStore_addContext(ms, &ms->certs, cert, toReplace, ppStoreContext, use_link); } @@ -222,10 +237,9 @@ static BOOL MemStore_deleteCert(WINECRYPT_CERTSTORE *store, context_t *context) { WINE_MEMSTORE *ms = (WINE_MEMSTORE *)store; - if (ContextList_Remove(&ms->certs, &ms->cs, context)) - Context_Release(context); + TRACE("(%p, %p)\n", store, context); - return TRUE; + return MemStore_deleteContext(ms, context); } static BOOL MemStore_addCRL(WINECRYPT_CERTSTORE *store, context_t *crl, @@ -251,10 +265,9 @@ static BOOL MemStore_deleteCRL(WINECRYPT_CERTSTORE *store, context_t *context) { WINE_MEMSTORE *ms = (WINE_MEMSTORE *)store; - if (!ContextList_Remove(&ms->crls, &ms->cs, context)) - Context_Release(context); + TRACE("(%p, %p)\n", store, context); - return TRUE; + return MemStore_deleteContext(ms, context); } static BOOL MemStore_addCTL(WINECRYPT_CERTSTORE *store, context_t *ctl, @@ -280,10 +293,9 @@ static BOOL MemStore_deleteCTL(WINECRYPT_CERTSTORE *store, context_t *context) { WINE_MEMSTORE *ms = (WINE_MEMSTORE *)store; - if (!ContextList_Remove(&ms->ctls, &ms->cs, context)) - Context_Release(context); + TRACE("(%p, %p)\n", store, context); - return TRUE; + return MemStore_deleteContext(ms, context); } static void MemStore_addref(WINECRYPT_CERTSTORE *store)