diff options
author | Wez Furlong <wez@php.net> | 2004-07-27 03:44:40 +0000 |
---|---|---|
committer | Wez Furlong <wez@php.net> | 2004-07-27 03:44:40 +0000 |
commit | 3e327b6e21b2fa10ab08935f4eb10f18b0c8d960 (patch) | |
tree | 0a1f77b8c6a5808ca713061fe6c98188bd75d518 | |
parent | 530d41732df74e626478233fb451e02db8c1b7b8 (diff) | |
download | php-git-3e327b6e21b2fa10ab08935f4eb10f18b0c8d960.tar.gz |
protect caller from a potential bailout
-rw-r--r-- | ext/com_dotnet/com_wrapper.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/ext/com_dotnet/com_wrapper.c b/ext/com_dotnet/com_wrapper.c index 4ca96cc8c5..0a35d26d8d 100644 --- a/ext/com_dotnet/com_wrapper.c +++ b/ext/com_dotnet/com_wrapper.c @@ -296,12 +296,16 @@ static HRESULT STDMETHODCALLTYPE disp_invokeex( } else if (wFlags & DISPATCH_PROPERTYPUT) { zend_update_property(Z_OBJCE_P(disp->object), disp->object, Z_STRVAL_PP(name), Z_STRLEN_PP(name)+1, *params[0] TSRMLS_CC); } else if (wFlags & DISPATCH_METHOD) { - if (SUCCESS == call_user_function_ex(EG(function_table), &disp->object, *name, - &retval, pdp->cArgs, params, 1, NULL TSRMLS_CC)) { - ret = S_OK; - } else { + zend_try { + if (SUCCESS == call_user_function_ex(EG(function_table), &disp->object, *name, + &retval, pdp->cArgs, params, 1, NULL TSRMLS_CC)) { + ret = S_OK; + } else { + ret = DISP_E_EXCEPTION; + } + } zend_catch { ret = DISP_E_EXCEPTION; - } + } zend_end_try(); } else { trace("Don't know how to handle this invocation %08x\n", wFlags); } |