From ae0bddeb856d5d731d7cea528c3bfd6a1284785a Mon Sep 17 00:00:00 2001 From: Nicolas Le Cam Date: Thu, 6 Nov 2008 16:26:26 +0100 Subject: [PATCH] advapi32/tests: Run a test on more platforms. --- dlls/advapi32/tests/crypt.c | 52 +++++++++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/dlls/advapi32/tests/crypt.c b/dlls/advapi32/tests/crypt.c index 75cd42234ab..44d08966c16 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; -- 2.11.4.GIT