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);
}
SysFreeString(ExceptInfo.bstrHelpFile);
}
}
+ break;
case DISP_E_PARAMNOTFOUND:
case DISP_E_TYPEMISMATCH:
*ErrString = pemalloc(25, 1);
/*
should be, but isn't :)
- if (V_VT(var_arg) != (VT_VARIANT|VT_BYREF))
- {
+ if (V_VT(var_arg) != (VT_VARIANT|VT_BYREF)) {
VariantInit(var_arg);
}
*/
break;
case VT_BSTR:
+ Z_TYPE_P(pval_arg) = IS_STRING;
+
if (V_ISBYREF(var_arg)) {
- Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(*V_BSTRREF(var_arg), &Z_STRLEN_P(pval_arg), codepage TSRMLS_CC);
+ if (*V_BSTR(var_arg)) {
+ Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(*V_BSTRREF(var_arg), &Z_STRLEN_P(pval_arg), codepage TSRMLS_CC);
+ } else {
+ ZVAL_NULL(pval_arg);
+ }
efree(V_BSTRREF(var_arg));
} else {
- Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(V_BSTR(var_arg), &Z_STRLEN_P(pval_arg), codepage TSRMLS_CC);
+ if (V_BSTR(var_arg)) {
+ Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(V_BSTR(var_arg), &Z_STRLEN_P(pval_arg), codepage TSRMLS_CC);
+ } else {
+ ZVAL_NULL(pval_arg);
+ }
}
-
- Z_TYPE_P(pval_arg) = IS_STRING;
break;
case VT_DATE: {
hr = V_UNKNOWN(var_arg)->lpVtbl->QueryInterface(var_arg->punkVal, &IID_IDispatch, &V_DISPATCH(var_arg));
- if (FAILED(hr))
- {
+ if (FAILED(hr)) {
char *error_message;
error_message = php_COM_error_message(hr TSRMLS_CC);
}
}
-#endif /* PHP_WIN32 */
\ No newline at end of file
+#endif /* PHP_WIN32 */
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);
}
SysFreeString(ExceptInfo.bstrHelpFile);
}
}
+ break;
case DISP_E_PARAMNOTFOUND:
case DISP_E_TYPEMISMATCH:
*ErrString = pemalloc(25, 1);
/*
should be, but isn't :)
- if (V_VT(var_arg) != (VT_VARIANT|VT_BYREF))
- {
+ if (V_VT(var_arg) != (VT_VARIANT|VT_BYREF)) {
VariantInit(var_arg);
}
*/
break;
case VT_BSTR:
+ Z_TYPE_P(pval_arg) = IS_STRING;
+
if (V_ISBYREF(var_arg)) {
- Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(*V_BSTRREF(var_arg), &Z_STRLEN_P(pval_arg), codepage TSRMLS_CC);
+ if (*V_BSTR(var_arg)) {
+ Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(*V_BSTRREF(var_arg), &Z_STRLEN_P(pval_arg), codepage TSRMLS_CC);
+ } else {
+ ZVAL_NULL(pval_arg);
+ }
efree(V_BSTRREF(var_arg));
} else {
- Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(V_BSTR(var_arg), &Z_STRLEN_P(pval_arg), codepage TSRMLS_CC);
+ if (V_BSTR(var_arg)) {
+ Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(V_BSTR(var_arg), &Z_STRLEN_P(pval_arg), codepage TSRMLS_CC);
+ } else {
+ ZVAL_NULL(pval_arg);
+ }
}
-
- Z_TYPE_P(pval_arg) = IS_STRING;
break;
case VT_DATE: {
hr = V_UNKNOWN(var_arg)->lpVtbl->QueryInterface(var_arg->punkVal, &IID_IDispatch, &V_DISPATCH(var_arg));
- if (FAILED(hr))
- {
+ if (FAILED(hr)) {
char *error_message;
error_message = php_COM_error_message(hr TSRMLS_CC);
}
}
-#endif /* PHP_WIN32 */
\ No newline at end of file
+#endif /* PHP_WIN32 */