From 18732f85f91a2913e1af22b55f970056215d3a46 Mon Sep 17 00:00:00 2001 From: Robert Shearman Date: Fri, 28 Jul 2006 01:21:28 +0100 Subject: [PATCH] oleaut32: Fix the return code for an invalid dispid in IFontDisp::Invoke. --- dlls/oleaut32/olefont.c | 12 +++++++----- dlls/oleaut32/tests/olefont.c | 6 ++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/dlls/oleaut32/olefont.c b/dlls/oleaut32/olefont.c index 07bfa340245..880e7409fba 100644 --- a/dlls/oleaut32/olefont.c +++ b/dlls/oleaut32/olefont.c @@ -1402,6 +1402,10 @@ static HRESULT WINAPI OLEFontImpl_Invoke( OLEFontImpl *this = impl_from_IDispatch(iface); HRESULT hr; + TRACE("%p->(%ld,%s,0x%lx,0x%x,%p,%p,%p,%p)\n", this, dispIdMember, + debugstr_guid(riid), lcid, wFlags, pDispParams, pVarResult, pExepInfo, + puArgErr); + /* validate parameters */ if (!IsEqualIID(riid, &IID_NULL)) @@ -1600,12 +1604,10 @@ static HRESULT WINAPI OLEFontImpl_Invoke( return hr; } break; + default: + ERR("member not found for dispid 0x%lx\n", dispIdMember); + return DISP_E_MEMBERNOTFOUND; } - FIXME("%p->(%ld,%s,%lx,%x,%p,%p,%p,%p), unhandled dispid/flag!\n", - this,dispIdMember,debugstr_guid(riid),lcid, - wFlags,pDispParams,pVarResult,pExepInfo,puArgErr - ); - return S_OK; } /************************************************************************ diff --git a/dlls/oleaut32/tests/olefont.c b/dlls/oleaut32/tests/olefont.c index 9aea60deb69..e98e84c5e5b 100644 --- a/dlls/oleaut32/tests/olefont.c +++ b/dlls/oleaut32/tests/olefont.c @@ -459,6 +459,12 @@ static void test_Invoke(void) hr = IFontDisp_Invoke(fontdisp, DISPID_FONT_BOLD, &IID_NULL, 0, DISPATCH_PROPERTYGET, NULL, &varresult, NULL, NULL); ok_ole_success(hr, "IFontDisp_Invoke"); + hr = IFontDisp_Invoke(fontdisp, DISPID_FONT_BOLD, &IID_NULL, 0, DISPATCH_METHOD, NULL, &varresult, NULL, NULL); + ok(hr == DISP_E_MEMBERNOTFOUND, "IFontDisp_Invoke should have returned DISP_E_MEMBERNOTFOUND instead of 0x%08lx\n", hr); + + hr = IFontDisp_Invoke(fontdisp, 0xdeadbeef, &IID_NULL, 0, DISPATCH_PROPERTYGET, NULL, &varresult, NULL, NULL); + ok(hr == DISP_E_MEMBERNOTFOUND, "IFontDisp_Invoke should have returned DISP_E_MEMBERNOTFOUND instead of 0x%08lx\n", hr); + IFontDisp_Release(fontdisp); }