summaryrefslogtreecommitdiff
path: root/ext/com_dotnet/com_com.c
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2020-08-26 14:52:09 +0200
committerChristoph M. Becker <cmbecker69@gmx.de>2020-08-26 14:53:46 +0200
commit1ff981d7a6b258322e9cea17e8c5418d73ef946c (patch)
tree74c040646ccb720655ea54f58a3028e5b798c950 /ext/com_dotnet/com_com.c
parent358721bcf75be6bd2020f8d65c19887823b49377 (diff)
parent5ff15e2651850ba30dde69056436b8774fac9166 (diff)
downloadphp-git-1ff981d7a6b258322e9cea17e8c5418d73ef946c.tar.gz
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3: Fix #64130: COM obj parameters passed by reference are not updated
Diffstat (limited to 'ext/com_dotnet/com_com.c')
-rw-r--r--ext/com_dotnet/com_com.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/ext/com_dotnet/com_com.c b/ext/com_dotnet/com_com.c
index 460453455d..1e4d41bee6 100644
--- a/ext/com_dotnet/com_com.c
+++ b/ext/com_dotnet/com_com.c
@@ -439,8 +439,9 @@ HRESULT php_com_get_id_of_name(php_com_dotnet_object *obj, char *name,
if (obj->typeinfo) {
hr = ITypeInfo_GetIDsOfNames(obj->typeinfo, &olename, 1, dispid);
if (FAILED(hr)) {
+ HRESULT hr1 = hr;
hr = IDispatch_GetIDsOfNames(V_DISPATCH(&obj->v), &IID_NULL, &olename, 1, LOCALE_SYSTEM_DEFAULT, dispid);
- if (SUCCEEDED(hr)) {
+ if (SUCCEEDED(hr) && hr1 != E_NOTIMPL) {
/* fall back on IDispatch direct */
ITypeInfo_Release(obj->typeinfo);
obj->typeinfo = NULL;
@@ -587,6 +588,7 @@ int php_com_do_invoke_byref(php_com_dotnet_object *obj, zend_internal_function *
}
}
efree(vargs);
+ if (byref_vals) efree(byref_vals);
}
return SUCCEEDED(hr) ? SUCCESS : FAILURE;