From afe14ab9b02b84c72b8eec7710706a538d6375b5 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Thu, 8 Mar 2018 23:42:18 -0600 Subject: [PATCH] quartz: Don't fail if the filter CLSID doesn't exist. Signed-off-by: Zebediah Figura Signed-off-by: Alexandre Julliard --- dlls/quartz/filtermapper.c | 7 +++++-- dlls/quartz/tests/filtermapper.c | 6 ++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/dlls/quartz/filtermapper.c b/dlls/quartz/filtermapper.c index 4e4cb37dcdb..20c7e3a8786 100644 --- a/dlls/quartz/filtermapper.c +++ b/dlls/quartz/filtermapper.c @@ -1523,22 +1523,25 @@ static HRESULT WINAPI FilterMapper_UnregisterFilter(IFilterMapper * iface, CLSID strcatW(wszKeyName, wszClsid); lRet = RegOpenKeyExW(HKEY_CLASSES_ROOT, wszKeyName, 0, KEY_WRITE, &hKey); + if (lRet == ERROR_FILE_NOT_FOUND) + goto done; hr = HRESULT_FROM_WIN32(lRet); } if (SUCCEEDED(hr)) { lRet = RegDeleteValueW(hKey, wszMeritName); - if (lRet != ERROR_SUCCESS) + if (lRet != ERROR_SUCCESS && lRet != ERROR_FILE_NOT_FOUND) hr = HRESULT_FROM_WIN32(lRet); lRet = RegDeleteTreeW(hKey, wszPins); - if (lRet != ERROR_SUCCESS) + if (lRet != ERROR_SUCCESS && lRet != ERROR_FILE_NOT_FOUND) hr = HRESULT_FROM_WIN32(lRet); RegCloseKey(hKey); } +done: CoTaskMemFree(wszClsid); return hr; diff --git a/dlls/quartz/tests/filtermapper.c b/dlls/quartz/tests/filtermapper.c index 829e89bea94..c9578c63e06 100644 --- a/dlls/quartz/tests/filtermapper.c +++ b/dlls/quartz/tests/filtermapper.c @@ -297,6 +297,12 @@ static void test_legacy_filter_registration(void) ret = RegDeleteKeyW(HKEY_CLASSES_ROOT, key_name); ok(!ret, "RegDeleteKeyA failed: %lu\n", ret); + hr = IFilterMapper_RegisterFilter(mapper, clsid, testfilterW, MERIT_UNLIKELY); + ok(hr == S_OK, "RegisterFilter failed: %#x\n", hr); + + hr = IFilterMapper_UnregisterFilter(mapper, clsid); + ok(hr == S_OK, "FilterMapper_UnregisterFilter failed with %x\n", hr); + IFilterMapper_Release(mapper); IFilterMapper2_Release(mapper2); }