cvs: php4 /ext/com conversion.c
| From: | Alan Brown | Date: | Thu, 18 Apr 2002 01:52:09 +0000 |
| Subject: | cvs: php4 /ext/com conversion.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-11186@lists.php.net to get a copy of this message | ||
abrown Wed Apr 17 21:52:09 2002 EDT
Modified files:
/php4/ext/com conversion.c
Log:
When V_BSTR() is NULL, we pass a NULL pointer into php_OLECHAR_to_char() which reports an
exception. Better to map a NULL string pointer to ZVAL_NULL.
Index: php4/ext/com/conversion.c
diff -u php4/ext/com/conversion.c:1.42 php4/ext/com/conversion.c:1.43
--- php4/ext/com/conversion.c:1.42 Tue Dec 11 10:28:55 2001
+++ php4/ext/com/conversion.c Wed Apr 17 21:52:06 2002
@@ -631,14 +631,34 @@
break;
case VT_BSTR:
- 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_ISBYREF(var_arg))
+ {
+ 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);
+ Z_TYPE_P(pval_arg) = IS_STRING;
+ }
+ else
+ {
+ ZVAL_NULL(pval_arg);
+ Z_TYPE_P(pval_arg) = IS_NULL;
+ }
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);
+ }
+ else
+ {
+ 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);
+ Z_TYPE_P(pval_arg) = IS_STRING;
+ }
+ else
+ {
+ ZVAL_NULL(pval_arg);
+ Z_TYPE_P(pval_arg) = IS_NULL;
+ }
}
- Z_TYPE_P(pval_arg) = IS_STRING;
break;
case VT_DATE: {
@@ -844,4 +864,4 @@
}
}
-#endif /* PHP_WIN32 */
\ No newline at end of file
+#endif /* PHP_WIN32 */