summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2000-10-09 11:48:16 +0000
committerZeev Suraski <zeev@php.net>2000-10-09 11:48:16 +0000
commit9103cae5e59c98f2efabe391d331580c864cad95 (patch)
tree16a864a5f0199262d9a02990b6d88f0c3eb20c58
parent97bd1845a6a5eb74198acca6b284235cde5c86ca (diff)
downloadphp-git-9103cae5e59c98f2efabe391d331580c864cad95.tar.gz
Fix bug #6447
-rw-r--r--ext/rpc/com/COM.c21
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);
}