diff --git a/dlls/crypt32/tests/base64.c b/dlls/crypt32/tests/base64.c index 965b3f8..9f648ac 100644 --- a/dlls/crypt32/tests/base64.c +++ b/dlls/crypt32/tests/base64.c @@ -273,14 +273,18 @@ static void decodeAndCompareBase64_A(LPCSTR toDecode, LPCSTR header, strcat(str, toDecode); if (trailer) strcat(str, trailer); + SetLastError(0xdeadbeef); ret = pCryptStringToBinaryA(str, 0, useFormat, NULL, &bufLen, NULL, NULL); /* expect failure with no header, and success with one */ if (header) ok(ret, "CryptStringToBinaryA failed: %d\n", GetLastError()); else - ok(!ret && GetLastError() == ERROR_INVALID_DATA, - "Expected !ret and last error ERROR_INVALID_DATA, got ret=%d, error=%d\n", ret, GetLastError()); + ok((!ret && GetLastError() == ERROR_INVALID_DATA) || + (useFormat == CRYPT_STRING_BASE64 && ret && GetLastError() == 0xdeadbeef) /* Vista */ || + (useFormat == CRYPT_STRING_BASE64_ANY && ret && GetLastError() == ERROR_INVALID_DATA) /* Vista */, + "Expected !ret and last error ERROR_INVALID_DATA when converting \"%s\" with format %d, got ret=%d, error=%d\n", + str, useFormat, ret, GetLastError()); if (ret) { buf = HeapAlloc(GetProcessHeap(), 0, bufLen); @@ -290,7 +294,7 @@ static void decodeAndCompareBase64_A(LPCSTR toDecode, LPCSTR header, ret = pCryptStringToBinaryA(str, 0, useFormat, buf, &bufLen, &skipped, &usedFormat); - ok(skipped == strlen(garbage), + ok((skipped == strlen(garbage)) || (skipped == 0 && !header), "Expected %d characters of \"%s\" skipped when trying format %08x, got %d (used format is %08x)\n", lstrlenA(garbage), str, useFormat, skipped, usedFormat); HeapFree(GetProcessHeap(), 0, buf);