]> granicus.if.org Git - php/commitdiff
fixing bugs #22295, #22218 and #22162 (duplicates)
authorHarald Radi <phanto@php.net>
Thu, 20 Feb 2003 11:34:26 +0000 (11:34 +0000)
committerHarald Radi <phanto@php.net>
Thu, 20 Feb 2003 11:34:26 +0000 (11:34 +0000)
ext/com/variant.h

index 66b4605613858ffe500c9f1e1916748279aeada0..ba052c4a193b4ada718cc9a810fbd4c4fe9b4eb8 100644 (file)
 
 #define IS_VARIANT                     php_VARIANT_get_le_variant()
 
-#define ZVAL_VARIANT(z, v)             if (V_VT(v) == VT_DISPATCH) {                                                   \
-                                                                       comval *obj;                                                                            \
-                                                                       ALLOC_COM(obj);                                                                         \
-                                                                       php_COM_set(obj, &V_DISPATCH(v), TRUE TSRMLS_CC);       \
-                                                                       ZVAL_COM((z), obj);                                                                     \
-                                                                       efree(v);                                                                                       \
-                                                               } else {                                                                                                \
-                                                                       php_variant_to_pval((v), (z), codepage TSRMLS_CC);      \
-                                                                       FREE_VARIANT(v);                                                                        \
+#define ZVAL_VARIANT(z, v)             if (V_VT(v) == VT_DISPATCH) { \
+                                                                       if (V_DISPATCH(v)) { \
+                                                                               comval *obj; \
+                                                                               ALLOC_COM(obj); \
+                                                                               php_COM_set(obj, &V_DISPATCH(v), TRUE TSRMLS_CC); \
+                                                                               ZVAL_COM((z), obj); \
+                                                                               efree(v); \
+                                                                       } else { \
+                                                                               ZVAL_NULL(z); \
+                                                                       } \
+                                                               } else { \
+                                                                       php_variant_to_pval((v), (z), codepage TSRMLS_CC); \
+                                                                       FREE_VARIANT(v); \
                                                                }
 
 #define RETVAL_VARIANT(v)      ZVAL_VARIANT(return_value, (v));