[PATCH 0/3] MR5967: mlang: Return the correct interface in GetGlobalFontLinkObject.
From: Fabian Maurer <dark.shadow4(a)web.de> --- dlls/mlang/tests/mlang.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dlls/mlang/tests/mlang.c b/dlls/mlang/tests/mlang.c index 6bb973dc285..988e48ee178 100644 --- a/dlls/mlang/tests/mlang.c +++ b/dlls/mlang/tests/mlang.c @@ -2308,6 +2308,7 @@ static void test_GetGlobalFontLinkObject(void) IMLangFontLink *IMLFL; IMLangCodePages *IMLCP; IMultiLanguage *IML; + IMultiLanguage2 *IML2; ret = GetGlobalFontLinkObject(NULL); ok(ret == E_INVALIDARG, "expected E_INVALIDARG got %#lx\n", ret); @@ -2327,6 +2328,10 @@ static void test_GetGlobalFontLinkObject(void) todo_wine ok(ret == E_NOINTERFACE, "expected E_NOINTERFACE got %#lx\n", ret); if (ret == S_OK) IMultiLanguage_Release(IML); + ret = IUnknown_QueryInterface((IUnknown*)unknown, &IID_IMultiLanguage2, (void**)&IML2); + todo_wine ok(ret == E_NOINTERFACE, "expected E_NOINTERFACE got %#lx\n", ret); + if (ret == S_OK) IMultiLanguage2_Release(IML2); + ret = IUnknown_QueryInterface((IUnknown*)unknown, &IID_IMLangFontLink, (void**)&IMLFL); ok(ret == S_OK, "expected S_OK got %#lx\n", ret); IMLangFontLink_Release(IMLFL); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/5967
From: Fabian Maurer <dark.shadow4(a)web.de> --- dlls/mlang/tests/mlang.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dlls/mlang/tests/mlang.c b/dlls/mlang/tests/mlang.c index 988e48ee178..7d94003bc78 100644 --- a/dlls/mlang/tests/mlang.c +++ b/dlls/mlang/tests/mlang.c @@ -2340,6 +2340,10 @@ static void test_GetGlobalFontLinkObject(void) ok(ret == S_OK, "expected S_OK got %#lx\n", ret); IMLangCodePages_Release(IMLCP); + todo_wine + ok(unknown == IMLFL, "IUnknown from GetGlobalFontLinkObject isn't IMLangFontLink\n"); + todo_wine + ok(unknown == IMLCP, "IUnknown from GetGlobalFontLinkObject isn't IMLangCodePages\n"); refcount = IUnknown_Release((IUnknown*)unknown); ok(refcount == 1, "Got refcount %ld\n", refcount); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/5967
From: Fabian Maurer <dark.shadow4(a)web.de> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56600 --- dlls/mlang/mlang.c | 11 ++++------- dlls/mlang/tests/mlang.c | 2 -- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/dlls/mlang/mlang.c b/dlls/mlang/mlang.c index c7e7f360f0b..2b85ccc5800 100644 --- a/dlls/mlang/mlang.c +++ b/dlls/mlang/mlang.c @@ -3887,11 +3887,11 @@ static BOOL WINAPI allocate_font_link_cb(PINIT_ONCE init_once, PVOID args, PVOID return SUCCEEDED(MultiLanguage_create(NULL, (void**)&font_link_global)); } -HRESULT WINAPI GetGlobalFontLinkObject(void **unknown) +HRESULT WINAPI GetGlobalFontLinkObject(void **iface) { - TRACE("%p\n", unknown); + TRACE("%p\n", iface); - if (!unknown) return E_INVALIDARG; + if (!iface) return E_INVALIDARG; if (!InitOnceExecuteOnce(&font_link_global_init_once, allocate_font_link_cb, NULL, NULL)) { @@ -3899,8 +3899,5 @@ HRESULT WINAPI GetGlobalFontLinkObject(void **unknown) return E_FAIL; } - IUnknown_AddRef(font_link_global); - *unknown = font_link_global; - - return S_OK; + return IUnknown_QueryInterface(font_link_global, &IID_IMLangFontLink, iface); } diff --git a/dlls/mlang/tests/mlang.c b/dlls/mlang/tests/mlang.c index 7d94003bc78..dd33f9f68c8 100644 --- a/dlls/mlang/tests/mlang.c +++ b/dlls/mlang/tests/mlang.c @@ -2340,9 +2340,7 @@ static void test_GetGlobalFontLinkObject(void) ok(ret == S_OK, "expected S_OK got %#lx\n", ret); IMLangCodePages_Release(IMLCP); - todo_wine ok(unknown == IMLFL, "IUnknown from GetGlobalFontLinkObject isn't IMLangFontLink\n"); - todo_wine ok(unknown == IMLCP, "IUnknown from GetGlobalFontLinkObject isn't IMLangCodePages\n"); refcount = IUnknown_Release((IUnknown*)unknown); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/5967
It might as well use "IMLangFontLink **" argument type to begin with. Naming it "iface" would be unusual, I think it's usually used for method implementation functions. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/5967#note_74824
participants (3)
-
Fabian Maurer -
Fabian Maurer (@DarkShadow44) -
Nikolay Sivov (@nsivov)