Module: wine Branch: master Commit: fe9e23998ac79239a1f89f22c9aa3295985ff55d URL: http://source.winehq.org/git/wine.git/?a=commit;h=fe9e23998ac79239a1f89f22c9... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Mon Oct 14 14:46:27 2013 +0200 crypt32: Don't call CertFreeCertificateContext in CertDeleteCertificateContext, leave it to store-specific functions. --- dlls/crypt32/collectionstore.c | 25 ++++--------------------- dlls/crypt32/store.c | 5 ----- 2 files changed, 4 insertions(+), 26 deletions(-) diff --git a/dlls/crypt32/collectionstore.c b/dlls/crypt32/collectionstore.c index 10dd6c1..f8dbf6e 100644 --- a/dlls/crypt32/collectionstore.c +++ b/dlls/crypt32/collectionstore.c @@ -271,15 +271,9 @@ static BOOL Collection_deleteCert(WINECRYPT_CERTSTORE *store, void *pCertContext TRACE("(%p, %p)\n", store, pCertContext); - /* Deleting the linked context results in its ref count getting - * decreased, but the caller of this (CertDeleteCertificateFromStore) also - * decreases pCertContext's ref count, by calling - * CertFreeCertificateContext. Increase ref count of linked context to - * compensate. - */ linked = Context_GetLinkedContext(pCertContext); - CertDuplicateCertificateContext(linked); ret = CertDeleteCertificateFromStore(linked); + CertFreeCertificateContext(pCertContext); return ret; } @@ -356,14 +350,9 @@ static BOOL Collection_deleteCRL(WINECRYPT_CERTSTORE *store, void *pCrlContext) TRACE("(%p, %p)\n", store, pCrlContext); - /* Deleting the linked context results in its ref count getting - * decreased, but the caller of this (CertDeleteCRLFromStore) also - * decreases pCrlContext's ref count, by calling CertFreeCRLContext. - * Increase ref count of linked context to compensate. - */ linked = Context_GetLinkedContext(pCrlContext); - CertDuplicateCRLContext(linked); ret = CertDeleteCRLFromStore(linked); + CertFreeCRLContext(pCrlContext); return ret; } @@ -432,22 +421,16 @@ static void *Collection_enumCTL(WINECRYPT_CERTSTORE *store, void *pPrev) return ret; } -static BOOL Collection_deleteCTL(WINECRYPT_CERTSTORE *store, - void *pCtlContext) +static BOOL Collection_deleteCTL(WINECRYPT_CERTSTORE *store, void *pCtlContext) { BOOL ret; PCCTL_CONTEXT linked; TRACE("(%p, %p)\n", store, pCtlContext); - /* Deleting the linked context results in its ref count getting - * decreased, but the caller of this (CertDeleteCTLFromStore) also - * decreases pCtlContext's ref count, by calling CertFreeCTLContext. - * Increase ref count of linked context to compensate. - */ linked = Context_GetLinkedContext(pCtlContext); - CertDuplicateCTLContext(linked); ret = CertDeleteCTLFromStore(linked); + CertFreeCTLContext(pCtlContext); return ret; } diff --git a/dlls/crypt32/store.c b/dlls/crypt32/store.c index 496c7a8..1054b04 100644 --- a/dlls/crypt32/store.c +++ b/dlls/crypt32/store.c @@ -1060,15 +1060,10 @@ BOOL WINAPI CertDeleteCertificateFromStore(PCCERT_CONTEXT pCertContext) ret = FALSE; else ret = hcs->vtbl->certs.deleteContext(hcs, (void *)pCertContext); - if (ret) - ret = CertFreeCertificateContext(pCertContext); } return ret; } -#define CrlContext_CopyProperties(to, from) \ - Context_CopyProperties((to), (from), sizeof(CRL_CONTEXT)) - BOOL WINAPI CertAddCRLContextToStore(HCERTSTORE hCertStore, PCCRL_CONTEXT pCrlContext, DWORD dwAddDisposition, PCCRL_CONTEXT* ppStoreContext)