Zebediah Figura : quartz: Don't fail if the filter CLSID doesn't exist.

Alexandre Julliard julliard at winehq.org
Fri Mar 9 16:11:51 CST 2018


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

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Thu Mar  8 23:42:18 2018 -0600

quartz: Don't fail if the filter CLSID doesn't exist.

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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 4e4cb37..20c7e3a 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 829e89b..c9578c6 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);
 }




More information about the wine-cvs mailing list