cvs: php4 /ext/com conversion.c

From: 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 */

« previous php.cvs (#11186) next »