mlang: Return the correct interface in GetGlobalFontLinkObject.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56600
This commit is contained in:
Fabian Maurer 2024-06-29 04:45:03 +02:00 committed by Alexandre Julliard
parent 6df749e2b8
commit 279d8bf724
4 changed files with 7 additions and 15 deletions

View file

@ -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);

View file

@ -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);
}

View file

@ -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);

View file

@ -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);")