summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/com/COM.c20
-rw-r--r--ext/rpc/com/com_wrapper.c20
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;