diff options
-rw-r--r-- | ext/com/COM.c | 12 | ||||
-rw-r--r-- | ext/rpc/com/com_wrapper.c | 12 |
2 files changed, 16 insertions, 8 deletions
diff --git a/ext/com/COM.c b/ext/com/COM.c index 854bd6be13..29cc740455 100644 --- a/ext/com/COM.c +++ b/ext/com/COM.c @@ -133,18 +133,21 @@ PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DIS if (FAILED(hr)) { switch (hr) { case DISP_E_EXCEPTION: { - int srclen=0; - char *src=estrdup(""); - int desclen=0; - char *desc=estrdup(""); + + char *src=estrdup("Unavailable"); + int srclen=strlen(src); + char *desc=estrdup("Unavailable"); + int desclen=strlen(desc); if (ExceptInfo.bstrSource) { + efree(src); src = php_OLECHAR_to_char(ExceptInfo.bstrSource, &srclen, codepage TSRMLS_CC); SysFreeString(ExceptInfo.bstrSource); } if (ExceptInfo.bstrDescription) { + efree(desc); desc = php_OLECHAR_to_char(ExceptInfo.bstrDescription, &desclen, codepage TSRMLS_CC); SysFreeString(ExceptInfo.bstrDescription); } @@ -159,6 +162,7 @@ PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DIS SysFreeString(ExceptInfo.bstrHelpFile); } } + break; case DISP_E_PARAMNOTFOUND: case DISP_E_TYPEMISMATCH: *ErrString = pemalloc(25, 1); diff --git a/ext/rpc/com/com_wrapper.c b/ext/rpc/com/com_wrapper.c index 854bd6be13..29cc740455 100644 --- a/ext/rpc/com/com_wrapper.c +++ b/ext/rpc/com/com_wrapper.c @@ -133,18 +133,21 @@ PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DIS if (FAILED(hr)) { switch (hr) { case DISP_E_EXCEPTION: { - int srclen=0; - char *src=estrdup(""); - int desclen=0; - char *desc=estrdup(""); + + char *src=estrdup("Unavailable"); + int srclen=strlen(src); + char *desc=estrdup("Unavailable"); + int desclen=strlen(desc); if (ExceptInfo.bstrSource) { + efree(src); src = php_OLECHAR_to_char(ExceptInfo.bstrSource, &srclen, codepage TSRMLS_CC); SysFreeString(ExceptInfo.bstrSource); } if (ExceptInfo.bstrDescription) { + efree(desc); desc = php_OLECHAR_to_char(ExceptInfo.bstrDescription, &desclen, codepage TSRMLS_CC); SysFreeString(ExceptInfo.bstrDescription); } @@ -159,6 +162,7 @@ PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DIS SysFreeString(ExceptInfo.bstrHelpFile); } } + break; case DISP_E_PARAMNOTFOUND: case DISP_E_TYPEMISMATCH: *ErrString = pemalloc(25, 1); |