diff options
Diffstat (limited to 'ext/com_dotnet/com_com.c')
| -rw-r--r-- | ext/com_dotnet/com_com.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/ext/com_dotnet/com_com.c b/ext/com_dotnet/com_com.c index d4e959cfab..f1e8399350 100644 --- a/ext/com_dotnet/com_com.c +++ b/ext/com_dotnet/com_com.c @@ -436,8 +436,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; @@ -584,6 +585,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; |
