Module: wine Branch: master Commit: 279d8bf7242df03c7269f30c86db2f7c3291cf1f URL: https://gitlab.winehq.org/wine/wine/-/commit/279d8bf7242df03c7269f30c86db2f7...
Author: Fabian Maurer dark.shadow4@web.de Date: Sat Jun 29 04:45:03 2024 +0200
mlang: Return the correct interface in GetGlobalFontLinkObject.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56600
---
dlls/gdiplus/graphics.c | 5 +---- dlls/mlang/mlang.c | 11 ++++------- dlls/mlang/tests/mlang.c | 4 +--- include/mlang.idl | 2 +- 4 files changed, 7 insertions(+), 15 deletions(-)
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index 265b3363ca9..1c0e6aa07d6 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -5354,7 +5354,6 @@ GpStatus WINGDIPAPI GdipIsVisibleRectI(GpGraphics *graphics, INT x, INT y, INT w /* Populates gdip_font_link_info struct based on the base_font and input string */ static void generate_font_link_info(struct gdip_format_string_info *info, DWORD length, GDIPCONST GpFont *base_font) { - IUnknown *unk; IMLangFontLink *iMLFL; GpFont *gpfont; HFONT map_hfont, hfont, old_font; @@ -5365,9 +5364,7 @@ static void generate_font_link_info(struct gdip_format_string_info *info, DWORD list_init(&info->font_link_info.sections); info->font_link_info.base_font = base_font;
- GetGlobalFontLinkObject((void**)&unk); - IUnknown_QueryInterface(unk, &IID_IMLangFontLink, (void**)&iMLFL); - IUnknown_Release(unk); + GetGlobalFontLinkObject(&iMLFL);
get_font_hfont(info->graphics, base_font, NULL, &hfont, NULL, NULL); IMLangFontLink_GetFontCodePages(iMLFL, info->hdc, hfont, &font_codepages); diff --git a/dlls/mlang/mlang.c b/dlls/mlang/mlang.c index c7e7f360f0b..fd78f47fdb2 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(IMLangFontLink **obj) { - TRACE("%p\n", unknown); + TRACE("%p\n", obj);
- if (!unknown) return E_INVALIDARG; + if (!obj) 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, (void**)obj); } diff --git a/dlls/mlang/tests/mlang.c b/dlls/mlang/tests/mlang.c index 7d94003bc78..d104d4d5184 100644 --- a/dlls/mlang/tests/mlang.c +++ b/dlls/mlang/tests/mlang.c @@ -2314,7 +2314,7 @@ static void test_GetGlobalFontLinkObject(void) ok(ret == E_INVALIDARG, "expected E_INVALIDARG got %#lx\n", ret);
unknown = (void *)0xdeadbeef; - ret = GetGlobalFontLinkObject(&unknown); + ret = GetGlobalFontLinkObject((IMLangFontLink**)&unknown); ok(ret == S_OK, "expected S_OK got %#lx\n", ret); ok(unknown != NULL && unknown != (void *)0xdeadbeef, "GetGlobalFontLinkObject() returned %p\n", unknown); @@ -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); diff --git a/include/mlang.idl b/include/mlang.idl index 7c4398feafd..c9b5912b0e3 100644 --- a/include/mlang.idl +++ b/include/mlang.idl @@ -762,7 +762,7 @@ cpp_quote("STDAPI Rfc1766ToLcidA(LCID *, LPCSTR);") cpp_quote("STDAPI Rfc1766ToLcidW(LCID *, LPCWSTR);") cpp_quote("#define Rfc1766ToLcid WINELIB_NAME_AW(Rfc1766ToLcid)")
-cpp_quote("STDAPI GetGlobalFontLinkObject(void **unknown);") +cpp_quote("STDAPI GetGlobalFontLinkObject(IMLangFontLink **unknown);") cpp_quote("STDAPI IsConvertINetStringAvailable(DWORD, DWORD);") cpp_quote("STDAPI ConvertINetString(LPDWORD, DWORD, DWORD, LPCSTR, LPINT, LPSTR, LPINT);") cpp_quote("STDAPI ConvertINetMultiByteToUnicode(LPDWORD, DWORD, LPCSTR, LPINT, LPWSTR, LPINT);")