diff --git a/dlls/vbscript/tests/run.c b/dlls/vbscript/tests/run.c index 0e6d6edf313..91c45e6c526 100644 --- a/dlls/vbscript/tests/run.c +++ b/dlls/vbscript/tests/run.c @@ -333,6 +333,11 @@ static void test_disp(IDispatch *disp) ok(id == -1, "id = %d\n", id); SysFreeString(str); + str = a2bstr("publicProp"); + hres = IDispatchEx_GetDispID(dispex, str, 0x80000000|fdexNameCaseInsensitive, &public_prop_id); + SysFreeString(str); + ok(hres == S_OK, "GetDispID(publicProp) failed: %08x\n", hres); + IDispatchEx_Release(dispex); } diff --git a/dlls/vbscript/vbdisp.c b/dlls/vbscript/vbdisp.c index 9005aa862d2..5f9d70a64f4 100644 --- a/dlls/vbscript/vbdisp.c +++ b/dlls/vbscript/vbdisp.c @@ -24,6 +24,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(vbscript); +#define FDEX_VERSION_MASK 0xf0000000 + static inline BOOL is_func_id(vbdisp_t *This, DISPID id) { return id < This->desc->func_cnt; @@ -326,6 +328,8 @@ static HRESULT WINAPI DispatchEx_GetDispID(IDispatchEx *iface, BSTR bstrName, DW TRACE("(%p)->(%s %x %p)\n", This, debugstr_w(bstrName), grfdex, pid); + grfdex &= ~FDEX_VERSION_MASK; + if(!This->desc) return E_UNEXPECTED;