crypt32: Pass context as context_t to Context_Release.

This commit is contained in:
Jacek Caban 2013-10-14 14:47:17 +02:00 committed by Alexandre Julliard
parent 802a6bc1bb
commit 17e1dfef9b
5 changed files with 14 additions and 15 deletions

View File

@ -202,7 +202,7 @@ BOOL WINAPI CertFreeCertificateContext(PCCERT_CONTEXT pCertContext)
TRACE("(%p)\n", pCertContext); TRACE("(%p)\n", pCertContext);
if (pCertContext) if (pCertContext)
ret = Context_Release((void *)pCertContext, CertDataContext_Free); ret = Context_Release(&cert_from_ptr(pCertContext)->base, CertDataContext_Free);
return ret; return ret;
} }

View File

@ -103,30 +103,29 @@ CONTEXT_PROPERTY_LIST *Context_GetProperties(const void *context)
return ptr->properties; return ptr->properties;
} }
BOOL Context_Release(void *context, ContextFreeFunc dataContextFree) BOOL Context_Release(context_t *context, ContextFreeFunc dataContextFree)
{ {
BASE_CONTEXT *base = BASE_CONTEXT_FROM_CONTEXT(context);
BOOL ret = TRUE; BOOL ret = TRUE;
if (base->ref <= 0) if (context->ref <= 0)
{ {
ERR("%p's ref count is %d\n", context, base->ref); ERR("%p's ref count is %d\n", context, context->ref);
return FALSE; return FALSE;
} }
if (InterlockedDecrement(&base->ref) == 0) if (InterlockedDecrement(&context->ref) == 0)
{ {
TRACE("freeing %p\n", context); TRACE("freeing %p\n", context);
if (!base->linked) if (!context->linked)
{ {
ContextPropertyList_Free(base->properties); ContextPropertyList_Free(context->properties);
dataContextFree(context); dataContextFree(CONTEXT_FROM_BASE_CONTEXT(context));
} else { } else {
Context_Release(CONTEXT_FROM_BASE_CONTEXT(base->linked), dataContextFree); Context_Release(context->linked, dataContextFree);
} }
CryptMemFree(base); CryptMemFree(context);
} }
else else
TRACE("%p's ref count is %d\n", context, base->ref); TRACE("%p's ref count is %d\n", context, context->ref);
return ret; return ret;
} }

View File

@ -346,7 +346,7 @@ BOOL WINAPI CertFreeCRLContext( PCCRL_CONTEXT pCrlContext)
TRACE("(%p)\n", pCrlContext); TRACE("(%p)\n", pCrlContext);
if (pCrlContext) if (pCrlContext)
ret = Context_Release((void *)pCrlContext, CrlDataContext_Free); ret = Context_Release(&crl_from_ptr(pCrlContext)->base, CrlDataContext_Free);
return ret; return ret;
} }

View File

@ -415,7 +415,7 @@ typedef void (*ContextFreeFunc)(void *context);
* If a data context has its ref count reach 0, calls dataContextFree on it. * If a data context has its ref count reach 0, calls dataContextFree on it.
* Returns FALSE if the reference count is <= 0 when called. * Returns FALSE if the reference count is <= 0 when called.
*/ */
BOOL Context_Release(void *context, ContextFreeFunc dataContextFree) DECLSPEC_HIDDEN; BOOL Context_Release(context_t *context, ContextFreeFunc dataContextFree) DECLSPEC_HIDDEN;
/** /**
* Context property list functions * Context property list functions

View File

@ -478,7 +478,7 @@ BOOL WINAPI CertFreeCTLContext(PCCTL_CONTEXT pCTLContext)
TRACE("(%p)\n", pCTLContext); TRACE("(%p)\n", pCTLContext);
if (pCTLContext) if (pCTLContext)
ret = Context_Release((void *)pCTLContext, CTLDataContext_Free); ret = Context_Release(&ctl_from_ptr(pCTLContext)->base, CTLDataContext_Free);
return ret; return ret;
} }