Nicolas Le Cam : advapi32/tests: Run a test on more platforms.

Alexandre Julliard julliard at winehq.org
Fri Nov 7 07:23:59 CST 2008


Module: wine
Branch: master
Commit: ae0bddeb856d5d731d7cea528c3bfd6a1284785a
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=ae0bddeb856d5d731d7cea528c3bfd6a1284785a

Author: Nicolas Le Cam <niko.lecam at gmail.com>
Date:   Thu Nov  6 16:26:26 2008 +0100

advapi32/tests: Run a test on more platforms.

---

 dlls/advapi32/tests/crypt.c |   52 +++++++++++++++++++++++++-----------------
 1 files changed, 31 insertions(+), 21 deletions(-)

diff --git a/dlls/advapi32/tests/crypt.c b/dlls/advapi32/tests/crypt.c
index 75cd422..44d0896 100644
--- a/dlls/advapi32/tests/crypt.c
+++ b/dlls/advapi32/tests/crypt.c
@@ -560,7 +560,7 @@ static void test_enum_providers(void)
 	LocalFree(provider);
 }
 
-static BOOL FindProvTypesRegVals(DWORD dwIndex, DWORD *pdwProvType, LPSTR *pszTypeName, 
+static BOOL FindProvTypesRegVals(DWORD *pdwIndex, DWORD *pdwProvType, LPSTR *pszTypeName,
 				 DWORD *pcbTypeName, DWORD *pdwTypeCount)
 {
 	HKEY hKey;
@@ -581,33 +581,43 @@ static BOOL FindProvTypesRegVals(DWORD dwIndex, DWORD *pdwProvType, LPSTR *pszTy
 	if (!(szName = LocalAlloc(LMEM_ZEROINIT, cbName)))
 		goto cleanup;
 
-	if (RegEnumKeyEx(hKey, dwIndex, szName, &cbName, NULL, NULL, NULL, NULL))
-		goto cleanup;
-	cbName++;
-	ch = szName + strlen(szName);
-	/* Convert "Type 000" to 0, etc/ */
-	*pdwProvType = *(--ch) - '0';
-	*pdwProvType += (*(--ch) - '0') * 10;
-	*pdwProvType += (*(--ch) - '0') * 100;
+	while (!RegEnumKeyEx(hKey, *pdwIndex, szName, &cbName, NULL, NULL, NULL, NULL))
+	{
+		cbName++;
+		ch = szName + strlen(szName);
+		/* Convert "Type 000" to 0, etc/ */
+		*pdwProvType = *(--ch) - '0';
+		*pdwProvType += (*(--ch) - '0') * 10;
+		*pdwProvType += (*(--ch) - '0') * 100;
 
-	if (RegOpenKey(hKey, szName, &hSubKey))
-		goto cleanup;
+		if (RegOpenKey(hKey, szName, &hSubKey))
+			break;
 
-	if (RegQueryValueEx(hSubKey, "TypeName", NULL, NULL, NULL, pcbTypeName))
-		goto cleanup;
+		if (!RegQueryValueEx(hSubKey, "TypeName", NULL, NULL, NULL, pcbTypeName))
+		{
+			if (!(*pszTypeName = LocalAlloc(LMEM_ZEROINIT, *pcbTypeName)))
+				break;
 
-	if (!(*pszTypeName = LocalAlloc(LMEM_ZEROINIT, *pcbTypeName)))
-		goto cleanup;
+			if (!RegQueryValueEx(hSubKey, "TypeName", NULL, NULL, (LPBYTE)*pszTypeName, pcbTypeName))
+			{
+				ret = TRUE;
+				break;
+			}
 
-	if (!RegQueryValueEx(hSubKey, "TypeName", NULL, NULL, (LPBYTE)*pszTypeName, pcbTypeName))
-		ret = TRUE;
+			LocalFree(*pszTypeName);
+		}
+
+		RegCloseKey(hSubKey);
+
+		(*pdwIndex)++;
+	}
 
-cleanup:
 	if (!ret)
 		LocalFree(*pszTypeName);
+	RegCloseKey(hSubKey);
 	LocalFree(szName);
 
-	RegCloseKey(hSubKey);
+cleanup:
 	RegCloseKey(hKey);
 
 	return ret;
@@ -616,7 +626,7 @@ cleanup:
 static void test_enum_provider_types(void)
 {
 	/* expected values */
-	DWORD dwProvType;
+	DWORD dwProvType = 0;
 	LPSTR pszTypeName = NULL;
 	DWORD cbTypeName;
 	DWORD dwTypeCount;
@@ -637,7 +647,7 @@ static void test_enum_provider_types(void)
 		return;
 	}
 
-	if (!FindProvTypesRegVals(index, &dwProvType, &pszTypeName, &cbTypeName, &dwTypeCount))
+	if (!FindProvTypesRegVals(&index, &dwProvType, &pszTypeName, &cbTypeName, &dwTypeCount))
 	{
 		skip("Could not find provider types in registry\n");
 		return;




More information about the wine-cvs mailing list