Nikolay Sivov : wbemdisp: Handle DISPATCH_PROPERTYPUT in scripting object Invoke().
Module: wine Branch: master Commit: 5b836d172554bec3b922958e5f4eed21bf7a1603 URL: https://source.winehq.org/git/wine.git/?a=commit;h=5b836d172554bec3b922958e5... Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Fri Feb 26 10:22:16 2021 +0300 wbemdisp: Handle DISPATCH_PROPERTYPUT in scripting object Invoke(). Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/wbemdisp/locator.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/dlls/wbemdisp/locator.c b/dlls/wbemdisp/locator.c index d7b04e343fd..619f7e5c67f 100644 --- a/dlls/wbemdisp/locator.c +++ b/dlls/wbemdisp/locator.c @@ -1226,16 +1226,28 @@ static HRESULT WINAPI object_Invoke( return hr; } - if (flags != (DISPATCH_METHOD|DISPATCH_PROPERTYGET)) + if (!(name = get_member_name( object, member ))) + return DISP_E_MEMBERNOTFOUND; + + if (flags == (DISPATCH_METHOD|DISPATCH_PROPERTYGET)) + { + memset( params, 0, sizeof(*params) ); + return IWbemClassObject_Get( object->object, name, 0, result, NULL, NULL ); + } + else if (flags == DISPATCH_PROPERTYPUT) + { + if (!params->cArgs || !params->rgvarg) + { + WARN( "Missing put property value\n" ); + return E_INVALIDARG; + } + return IWbemClassObject_Put( object->object, name, 0, params->rgvarg, 0 ); + } + else { FIXME( "flags %x not supported\n", flags ); return E_NOTIMPL; } - if (!(name = get_member_name( object, member ))) - return DISP_E_MEMBERNOTFOUND; - - memset( params, 0, sizeof(*params) ); - return IWbemClassObject_Get( object->object, name, 0, result, NULL, NULL ); } static HRESULT WINAPI object_Put_(
participants (1)
-
Alexandre Julliard