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