From: Zeev Suraski Date: Mon, 9 Oct 2000 11:48:16 +0000 (+0000) Subject: Fix bug #6447 X-Git-Tag: php-4.0.3~36 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9103cae5e59c98f2efabe391d331580c864cad95;p=php Fix bug #6447 --- diff --git a/ext/rpc/com/COM.c b/ext/rpc/com/COM.c index b7faa18dd4..782a797904 100644 --- a/ext/rpc/com/COM.c +++ b/ext/rpc/com/COM.c @@ -697,6 +697,13 @@ static void do_COM_propput(pval *return_value, IDispatch *i_dispatch, pval *arg_ hr = i_dispatch->lpVtbl->Invoke(i_dispatch, dispid, &IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_PROPERTYPUT, &dispparams, NULL, NULL, 0); + if (FAILED(hr)) { + error_message = php_COM_error_message(hr); + php_error(E_WARNING,"PropPut() failed: %s\n", error_message); + LocalFree(error_message); + efree(propname); + RETURN_FALSE; + } dispparams.cArgs = 0; dispparams.cNamedArgs = 0; @@ -705,15 +712,13 @@ static void do_COM_propput(pval *return_value, IDispatch *i_dispatch, pval *arg_ LOCALE_SYSTEM_DEFAULT, DISPATCH_PROPERTYGET, &dispparams, &var_result, NULL, 0); - if (FAILED(hr)) { - error_message = php_COM_error_message(hr); - php_error(E_WARNING,"PropPut() failed: %s\n", error_message); - LocalFree(error_message); - efree(propname); - RETURN_FALSE; - } - php_variant_to_pval(&var_result, return_value, 0); + if (SUCCEEDED(hr)) { + php_variant_to_pval(&var_result, return_value, 0); + } else { + *return_value = *value; + zval_copy_ctor(return_value); + } efree(propname); }