Jacek Caban : crypt32: Use context_t in Context_CreateLinkContext.
Alexandre Julliard
julliard at winehq.org
Mon Oct 14 12:39:29 CDT 2013
Module: wine
Branch: master
Commit: 2553b4602bda7d917f17ec80164d51545d507936
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2553b4602bda7d917f17ec80164d51545d507936
Author: Jacek Caban <jacek at codeweavers.com>
Date: Mon Oct 14 14:48:06 2013 +0200
crypt32: Use context_t in Context_CreateLinkContext.
---
dlls/crypt32/collectionstore.c | 28 ++++++++++++----------------
dlls/crypt32/context.c | 25 +++++++++++--------------
dlls/crypt32/crypt32_private.h | 8 ++++++--
3 files changed, 29 insertions(+), 32 deletions(-)
diff --git a/dlls/crypt32/collectionstore.c b/dlls/crypt32/collectionstore.c
index af209cd..dbcf21b 100644
--- a/dlls/crypt32/collectionstore.c
+++ b/dlls/crypt32/collectionstore.c
@@ -73,17 +73,15 @@ static DWORD Collection_release(WINECRYPT_CERTSTORE *store, DWORD flags)
}
static void *CRYPT_CollectionCreateContextFromChild(WINE_COLLECTIONSTORE *store,
- WINE_STORE_LIST_ENTRY *storeEntry, void *child, size_t contextSize,
- BOOL addRef)
+ WINE_STORE_LIST_ENTRY *storeEntry, void *child, size_t contextSize)
{
- void *ret = Context_CreateLinkContext(contextSize, child,
- sizeof(WINE_STORE_LIST_ENTRY*), addRef);
+ context_t *ret = Context_CreateLinkContext(contextSize, context_from_ptr(child),
+ sizeof(WINE_STORE_LIST_ENTRY*));
if (ret)
- *(WINE_STORE_LIST_ENTRY **)Context_GetExtra(ret, contextSize)
- = storeEntry;
+ *(WINE_STORE_LIST_ENTRY **)Context_GetExtra(context_ptr(ret), contextSize) = storeEntry;
- return ret;
+ return context_ptr(ret);
}
static BOOL CRYPT_CollectionAddContext(WINE_COLLECTIONSTORE *store,
@@ -168,9 +166,10 @@ static void *CRYPT_CollectionAdvanceEnum(WINE_COLLECTIONSTORE *store,
}
else
child = contextFuncs->enumContext(storeEntry->store, NULL);
- if (child)
- ret = CRYPT_CollectionCreateContextFromChild(store, storeEntry, child,
- contextSize, FALSE);
+ if (child) {
+ ret = CRYPT_CollectionCreateContextFromChild(store, storeEntry, child, contextSize);
+ Context_Release(context_from_ptr(child));
+ }
else
{
if (storeNext)
@@ -211,8 +210,7 @@ static BOOL Collection_addCert(WINECRYPT_CERTSTORE *store, void *cert,
WINE_STORE_LIST_ENTRY *storeEntry = *(WINE_STORE_LIST_ENTRY **)
Context_GetExtra(childContext, sizeof(CERT_CONTEXT));
PCERT_CONTEXT context =
- CRYPT_CollectionCreateContextFromChild(cs, storeEntry, childContext,
- sizeof(CERT_CONTEXT), TRUE);
+ CRYPT_CollectionCreateContextFromChild(cs, storeEntry, childContext, sizeof(CERT_CONTEXT));
if (context)
context->hCertStore = store;
@@ -291,8 +289,7 @@ static BOOL Collection_addCRL(WINECRYPT_CERTSTORE *store, void *crl,
WINE_STORE_LIST_ENTRY *storeEntry = *(WINE_STORE_LIST_ENTRY **)
Context_GetExtra(childContext, sizeof(CRL_CONTEXT));
PCRL_CONTEXT context =
- CRYPT_CollectionCreateContextFromChild(cs, storeEntry, childContext,
- sizeof(CRL_CONTEXT), TRUE);
+ CRYPT_CollectionCreateContextFromChild(cs, storeEntry, childContext, sizeof(CRL_CONTEXT));
if (context)
context->hCertStore = store;
@@ -370,8 +367,7 @@ static BOOL Collection_addCTL(WINECRYPT_CERTSTORE *store, void *ctl,
WINE_STORE_LIST_ENTRY *storeEntry = *(WINE_STORE_LIST_ENTRY **)
Context_GetExtra(childContext, sizeof(CTL_CONTEXT));
PCTL_CONTEXT context =
- CRYPT_CollectionCreateContextFromChild(cs, storeEntry, childContext,
- sizeof(CTL_CONTEXT), TRUE);
+ CRYPT_CollectionCreateContextFromChild(cs, storeEntry, childContext, sizeof(CTL_CONTEXT));
if (context)
context->hCertStore = store;
diff --git a/dlls/crypt32/context.c b/dlls/crypt32/context.c
index ff1c440..b2b2282 100644
--- a/dlls/crypt32/context.c
+++ b/dlls/crypt32/context.c
@@ -51,10 +51,9 @@ void *Context_CreateDataContext(size_t contextSize, const context_vtbl_t *vtbl)
return CONTEXT_FROM_BASE_CONTEXT(context);
}
-void *Context_CreateLinkContext(unsigned int contextSize, void *linked, unsigned int extra,
- BOOL addRef)
+context_t *Context_CreateLinkContext(unsigned int contextSize, context_t *linked, unsigned int extra)
{
- BASE_CONTEXT *context;
+ context_t *context;
TRACE("(%d, %p, %d)\n", contextSize, linked, extra);
@@ -62,15 +61,14 @@ void *Context_CreateLinkContext(unsigned int contextSize, void *linked, unsigned
if (!context)
return NULL;
- memcpy(CONTEXT_FROM_BASE_CONTEXT(context), linked, contextSize);
- context->vtbl = BASE_CONTEXT_FROM_CONTEXT(linked)->vtbl;
+ memcpy(context_ptr(context), context_ptr(linked), contextSize);
+ context->vtbl = linked->vtbl;
context->ref = 1;
- context->linked = BASE_CONTEXT_FROM_CONTEXT(linked);
- if (addRef)
- Context_AddRef(BASE_CONTEXT_FROM_CONTEXT(linked));
+ context->linked = linked;
+ Context_AddRef(linked);
TRACE("returning %p\n", context);
- return CONTEXT_FROM_BASE_CONTEXT(context);
+ return context;
}
void Context_AddRef(context_t *context)
@@ -185,15 +183,14 @@ static inline void *ContextList_EntryToContext(const struct ContextList *list,
void *ContextList_Add(struct ContextList *list, void *toLink, void *toReplace)
{
- void *context;
+ context_t *context;
TRACE("(%p, %p, %p)\n", list, toLink, toReplace);
- context = Context_CreateLinkContext(list->contextSize, toLink,
- sizeof(struct list), TRUE);
+ context = Context_CreateLinkContext(list->contextSize, context_from_ptr(toLink), sizeof(struct list));
if (context)
{
- struct list *entry = ContextList_ContextToEntry(list, context);
+ struct list *entry = ContextList_ContextToEntry(list, CONTEXT_FROM_BASE_CONTEXT(context));
TRACE("adding %p\n", context);
EnterCriticalSection(&list->cs);
@@ -212,7 +209,7 @@ void *ContextList_Add(struct ContextList *list, void *toLink, void *toReplace)
list_add_head(&list->contexts, entry);
LeaveCriticalSection(&list->cs);
}
- return context;
+ return CONTEXT_FROM_BASE_CONTEXT(context);
}
void *ContextList_Enum(struct ContextList *list, void *pPrev)
diff --git a/dlls/crypt32/crypt32_private.h b/dlls/crypt32/crypt32_private.h
index bcb4808..287e0c2 100644
--- a/dlls/crypt32/crypt32_private.h
+++ b/dlls/crypt32/crypt32_private.h
@@ -177,6 +177,11 @@ static inline context_t *context_from_ptr(const void *ptr)
return (context_t*)ptr-1;
}
+static inline void *context_ptr(context_t *context)
+{
+ return context+1;
+}
+
typedef struct {
context_t base;
CERT_CONTEXT ctx;
@@ -390,8 +395,7 @@ void *Context_CreateDataContext(size_t contextSize, const context_vtbl_t *vtbl)
* it should be) linked is addref'd.
* Free with Context_Release.
*/
-void *Context_CreateLinkContext(unsigned int contextSize, void *linked, unsigned int extra,
- BOOL addRef) DECLSPEC_HIDDEN;
+context_t *Context_CreateLinkContext(unsigned contextSize, context_t *linked, unsigned extra) DECLSPEC_HIDDEN;
/* Returns a pointer to the extra bytes allocated with context, which must be
* a link context.
More information about the wine-cvs
mailing list