]> granicus.if.org Git - php/commitdiff
When V_BSTR() is NULL, we pass a NULL pointer into php_OLECHAR_to_char() which report...
authorAlan Brown <abrown@php.net>
Thu, 18 Apr 2002 01:52:07 +0000 (01:52 +0000)
committerAlan Brown <abrown@php.net>
Thu, 18 Apr 2002 01:52:07 +0000 (01:52 +0000)
ext/com/conversion.c
ext/rpc/com/conversion.c

index 358314f132d0651a2a554e9a3b7d64d790d20cf0..cd947fb72da74d66135325d8cdab214ae931dfd8 100644 (file)
@@ -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 */
index 358314f132d0651a2a554e9a3b7d64d790d20cf0..cd947fb72da74d66135325d8cdab214ae931dfd8 100644 (file)
@@ -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 */