diff options
-rw-r--r-- | ext/com/COM.c | 20 | ||||
-rw-r--r-- | ext/rpc/com/com_wrapper.c | 20 |
2 files changed, 26 insertions, 14 deletions
diff --git a/ext/com/COM.c b/ext/com/COM.c index 70906964ad..44b35fb4c7 100644 --- a/ext/com/COM.c +++ b/ext/com/COM.c @@ -131,13 +131,19 @@ PHPAPI HRESULT php_COM_set(i_dispatch *obj, IDispatch FAR* pDisp, int cleanup) { HRESULT hr; - obj->i.dispatch = pDisp; - obj->typelib = !FAILED(obj->i.dispatch->lpVtbl->GetTypeInfo(obj->i.dispatch, 0, LANG_NEUTRAL, &(obj->i.typeinfo))); - - if(cleanup) { - pDisp = NULL; - } else { - hr = obj->i.dispatch->lpVtbl->AddRef(obj->i.dispatch); + if((obj->i.dispatch = pDisp) == NULL) + { + php_error(E_ERROR, "NULL pointer exception"); + } + else + { + obj->typelib = !FAILED(obj->i.dispatch->lpVtbl->GetTypeInfo(obj->i.dispatch, 0, LANG_NEUTRAL, &(obj->i.typeinfo))); + + if(cleanup) { + pDisp = NULL; + } else { + hr = obj->i.dispatch->lpVtbl->AddRef(obj->i.dispatch); + } } return hr; diff --git a/ext/rpc/com/com_wrapper.c b/ext/rpc/com/com_wrapper.c index 70906964ad..44b35fb4c7 100644 --- a/ext/rpc/com/com_wrapper.c +++ b/ext/rpc/com/com_wrapper.c @@ -131,13 +131,19 @@ PHPAPI HRESULT php_COM_set(i_dispatch *obj, IDispatch FAR* pDisp, int cleanup) { HRESULT hr; - obj->i.dispatch = pDisp; - obj->typelib = !FAILED(obj->i.dispatch->lpVtbl->GetTypeInfo(obj->i.dispatch, 0, LANG_NEUTRAL, &(obj->i.typeinfo))); - - if(cleanup) { - pDisp = NULL; - } else { - hr = obj->i.dispatch->lpVtbl->AddRef(obj->i.dispatch); + if((obj->i.dispatch = pDisp) == NULL) + { + php_error(E_ERROR, "NULL pointer exception"); + } + else + { + obj->typelib = !FAILED(obj->i.dispatch->lpVtbl->GetTypeInfo(obj->i.dispatch, 0, LANG_NEUTRAL, &(obj->i.typeinfo))); + + if(cleanup) { + pDisp = NULL; + } else { + hr = obj->i.dispatch->lpVtbl->AddRef(obj->i.dispatch); + } } return hr; |