diff --git a/dlls/wbemdisp/locator.c b/dlls/wbemdisp/locator.c index 6880a503e1d..c3e0c86f4ae 100644 --- a/dlls/wbemdisp/locator.c +++ b/dlls/wbemdisp/locator.c @@ -1286,7 +1286,8 @@ static HRESULT WINAPI object_Invoke( if (!(name = get_member_name( object, member, &type ))) return DISP_E_MEMBERNOTFOUND; - if (flags == (DISPATCH_METHOD|DISPATCH_PROPERTYGET)) + if (flags == (DISPATCH_METHOD|DISPATCH_PROPERTYGET) || + flags == DISPATCH_PROPERTYGET) { memset( params, 0, sizeof(*params) ); return IWbemClassObject_Get( object->object, name, 0, result, NULL, NULL ); diff --git a/dlls/wbemdisp/tests/wbemdisp.c b/dlls/wbemdisp/tests/wbemdisp.c index 187cb8d9e80..0144f91c493 100644 --- a/dlls/wbemdisp/tests/wbemdisp.c +++ b/dlls/wbemdisp/tests/wbemdisp.c @@ -223,6 +223,21 @@ static void test_ParseDisplayName(void) ok( V_VT( &res ) == VT_BSTR, "got %u\n", V_VT( &res ) ); ok( V_BSTR( &res ) != (BSTR)0xdeadbeef, "got %u\n", V_VT( &res ) ); VariantClear( &res ); + + V_VT( &res ) = VT_ERROR; + V_BSTR( &res ) = (BSTR)0xdeadbeef; + memset( ¶ms, 0, sizeof(params) ); + hr = IDispatch_Invoke( dispatch, dispid, &IID_NULL, LOCALE_USER_DEFAULT, + DISPATCH_PROPERTYGET, + ¶ms, &res, NULL, NULL ); + ok( hr == S_OK, "got %#lx\n", hr ); + ok( params.rgvarg == NULL, "got %p\n", params.rgvarg ); + ok( params.rgdispidNamedArgs == NULL, "got %p\n", params.rgdispidNamedArgs ); + ok( !params.cArgs, "got %u\n", params.cArgs ); + ok( !params.cNamedArgs, "got %u\n", params.cNamedArgs ); + ok( V_VT( &res ) == VT_BSTR, "got %u\n", V_VT( &res ) ); + ok( V_BSTR( &res ) != (BSTR)0xdeadbeef, "got %u\n", V_VT( &res ) ); + VariantClear( &res ); VariantClear( &var ); fetched = 0xdeadbeef;