diff options
| author | Zeev Suraski <zeev@php.net> | 2000-10-09 11:48:16 +0000 |
|---|---|---|
| committer | Zeev Suraski <zeev@php.net> | 2000-10-09 11:48:16 +0000 |
| commit | 9103cae5e59c98f2efabe391d331580c864cad95 (patch) | |
| tree | 16a864a5f0199262d9a02990b6d88f0c3eb20c58 | |
| parent | 97bd1845a6a5eb74198acca6b284235cde5c86ca (diff) | |
| download | php-git-9103cae5e59c98f2efabe391d331580c864cad95.tar.gz | |
Fix bug #6447
| -rw-r--r-- | ext/rpc/com/COM.c | 21 |
1 files changed, 13 insertions, 8 deletions
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); } |
