oleaut32: Fix best version handling in QueryPathOfRegTypeLib when type library redire...
authorPiotr Caban <piotr@codeweavers.com>
Mon, 25 Jan 2016 15:24:51 +0000 (16:24 +0100)
committerAlexandre Julliard <julliard@winehq.org>
Tue, 26 Jan 2016 09:17:26 +0000 (18:17 +0900)
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
dlls/oleaut32/tests/typelib.c
dlls/oleaut32/typelib.c

index fe80b70b6497c9a64bbeb7d9b4bda3b3aa5a21d3..a354f00417d29d6605e21e255466104e78bc1ceb 100644 (file)
@@ -5626,6 +5626,11 @@ static void test_LoadRegTypeLib(void)
     ok(hr == TYPE_E_LIBNOTREGISTERED || broken(hr == S_OK) /* winxp */, "got 0x%08x\n", hr);
     SysFreeString(path);
 
+    path = NULL;
+    hr = QueryPathOfRegTypeLib(&LIBID_TestTypelib, 0xffff, 0xffff, LOCALE_NEUTRAL, &path);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+    SysFreeString(path);
+
     /* manifest version is 2.0, actual is 1.0 */
     hr = LoadRegTypeLib(&LIBID_register_test, 1, 0, LOCALE_NEUTRAL, &tl);
     ok(hr == TYPE_E_LIBNOTREGISTERED || broken(hr == S_OK) /* winxp */, "got 0x%08x\n", hr);
index 0a83b79111cccd1edd968247b522b661eaf561cb..6fd52b04a160b23d97cc3cc98ce520232db9839b 100644 (file)
@@ -323,7 +323,7 @@ static HRESULT query_typelib_path( REFGUID guid, WORD wMaj, WORD wMin,
             WCHAR *nameW;
             DWORD len;
 
-            if (tlib->major_version != wMaj || tlib->minor_version < wMin)
+            if ((wMaj != 0xffff || wMin != 0xffff) && (tlib->major_version != wMaj || tlib->minor_version < wMin))
                 return TYPE_E_LIBNOTREGISTERED;
 
             nameW = (WCHAR*)((BYTE*)data.lpSectionBase + tlib->name_offset);