advapi32: Fix bad comparison of unsigned variable

Andrew Talbot Andrew.Talbot at talbotville.com
Mon Nov 13 15:59:24 CST 2006


Changelog:
    advapi32: Fix bad comparison of unsigned variable.

diff -urN a/dlls/advapi32/crypt.c b/dlls/advapi32/crypt.c
--- a/dlls/advapi32/crypt.c	2006-10-03 16:06:00.000000000 +0100
+++ b/dlls/advapi32/crypt.c	2006-11-13 21:35:44.000000000 +0000
@@ -594,20 +594,27 @@
 		return FALSE;
 	}
 
-	pProv->refcount--;
-	if (pProv->refcount <= 0) 
+	switch (pProv->refcount)
 	{
-		ret = pProv->pFuncs->pCPReleaseContext(pProv->hPrivate, dwFlags);
-		pProv->dwMagic = 0;
-		FreeLibrary(pProv->hModule);
+		case 0:
+			break;
+		case 1:
+			ret = pProv->pFuncs->pCPReleaseContext(pProv->hPrivate, dwFlags);
+			pProv->dwMagic = 0;
+			FreeLibrary(pProv->hModule);
 #if 0
-		CRYPT_Free(pProv->pVTable->pContextInfo);
+			CRYPT_Free(pProv->pVTable->pContextInfo);
 #endif
-		CRYPT_Free(pProv->pVTable->pszProvName);
-		CRYPT_Free(pProv->pVTable);
-		CRYPT_Free(pProv->pFuncs);
-		CRYPT_Free(pProv);
+			CRYPT_Free(pProv->pVTable->pszProvName);
+			CRYPT_Free(pProv->pVTable);
+			CRYPT_Free(pProv->pFuncs);
+			CRYPT_Free(pProv);
+			--pProv->refcount;
+			break;
+		default:
+			--pProv->refcount;
 	}
+
 	return ret;
 }
 



More information about the wine-patches mailing list