From c4ac2d285dd3c0c4aa3282eb70dc51d5ab4d5fcd Mon Sep 17 00:00:00 2001 From: Donna Whisnant Date: Sat, 4 Nov 2017 11:04:15 -0500 Subject: [PATCH] oleaut32: Fix DispCallFunc() stdcall test to be ABI not x64 specific. The tests checking callee stack cleaning for stdcall vs. cdecl should be a function of the calling ABI of the platform, not whether it is 64-bit or not. This fixes the check for platforms like ARM that may be 32-bit but that do not use the stdcall convention of callee stack cleaning. Signed-off-by: Donna Whisnant Signed-off-by: Alexandre Julliard --- dlls/oleaut32/tests/typelib.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/dlls/oleaut32/tests/typelib.c b/dlls/oleaut32/tests/typelib.c index d8ff3103ea7..bb7016496bb 100644 --- a/dlls/oleaut32/tests/typelib.c +++ b/dlls/oleaut32/tests/typelib.c @@ -92,6 +92,12 @@ static WCHAR wszguid[] = {'g','u','i','d',0}; static const BOOL is_win64 = sizeof(void *) > sizeof(int); +#ifdef __i386__ +static const BOOL abi_supports_stdcall = TRUE; +#else +static const BOOL abi_supports_stdcall = FALSE; +#endif + static HRESULT WINAPI invoketest_QueryInterface(IInvokeTest *iface, REFIID riid, void **ret) { if (IsEqualIID(riid, &IID_IUnknown) || @@ -1115,7 +1121,7 @@ static void test_DispCallFunc(void) ok( V_UI4(&result) == 4321, "wrong result %u\n", V_UI4(&result) ); /* the function checks the argument sizes for stdcall */ - if (!is_win64) /* no stdcall on 64-bit */ + if (abi_supports_stdcall) { res = DispCallFunc( NULL, (ULONG_PTR)stdcall_func, CC_STDCALL, VT_UI4, 0, types, pargs, &result ); ok( res == DISP_E_BADCALLEE, "DispCallFunc wrong error %x\n", res );