summaryrefslogtreecommitdiff
path: root/ext/rpc/com/conversion.c
diff options
context:
space:
mode:
authorAlan Brown <abrown@php.net>2002-04-18 01:52:07 +0000
committerAlan Brown <abrown@php.net>2002-04-18 01:52:07 +0000
commitbbb133f2924f0bcb2cfcd577c9650e5132f10a0c (patch)
tree8822c4ed61feca37718f6be8b0dc9b44b851146b /ext/rpc/com/conversion.c
parent57031f2ba0a31bdda1938b913b777ff9b9a5cc48 (diff)
downloadphp-git-bbb133f2924f0bcb2cfcd577c9650e5132f10a0c.tar.gz
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.
Diffstat (limited to 'ext/rpc/com/conversion.c')
-rw-r--r--ext/rpc/com/conversion.c32
1 files changed, 26 insertions, 6 deletions
diff --git a/ext/rpc/com/conversion.c b/ext/rpc/com/conversion.c
index 358314f132..cd947fb72d 100644
--- a/ext/rpc/com/conversion.c
+++ b/ext/rpc/com/conversion.c
@@ -631,14 +631,34 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int codepage TS
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 @@ static void comval_to_variant(pval *pval_arg, VARIANT *var_arg TSRMLS_DC)
}
}
-#endif /* PHP_WIN32 */ \ No newline at end of file
+#endif /* PHP_WIN32 */