cvs: php4(PHP_4_2_0) /ext/com COM.c conversion.c
| From: | Harald Radi | Date: | Thu, 18 Apr 2002 10:15:34 +0000 |
| Subject: | cvs: php4(PHP_4_2_0) /ext/com COM.c conversion.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-11189@lists.php.net to get a copy of this message | ||
phanto Thu Apr 18 06:15:34 2002 EDT
Modified files: (Branch: PHP_4_2_0)
/php4/ext/com COM.c conversion.c
Log:
MFH
Index: php4/ext/com/COM.c
diff -u php4/ext/com/COM.c:1.64.2.1 php4/ext/com/COM.c:1.64.2.2
--- php4/ext/com/COM.c:1.64.2.1 Fri Mar 15 15:54:34 2002
+++ php4/ext/com/COM.c Thu Apr 18 06:15:30 2002
@@ -133,18 +133,20 @@
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 +161,7 @@
SysFreeString(ExceptInfo.bstrHelpFile);
}
}
+ break;
case DISP_E_PARAMNOTFOUND:
case DISP_E_TYPEMISMATCH:
*ErrString = pemalloc(25, 1);
Index: php4/ext/com/conversion.c
diff -u php4/ext/com/conversion.c:1.42 php4/ext/com/conversion.c:1.42.2.1
--- php4/ext/com/conversion.c:1.42 Tue Dec 11 10:28:55 2001
+++ php4/ext/com/conversion.c Thu Apr 18 06:15:31 2002
@@ -380,8 +380,7 @@
/*
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);
}
*/
@@ -631,14 +630,22 @@
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: {
@@ -679,8 +686,7 @@
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);
@@ -844,4 +850,4 @@
}
}
-#endif /* PHP_WIN32 */
\ No newline at end of file
+#endif /* PHP_WIN32 */