summaryrefslogtreecommitdiff
path: root/ext/com/variant.h
diff options
context:
space:
mode:
authorHarald Radi <phanto@php.net>2001-09-08 20:40:56 +0000
committerHarald Radi <phanto@php.net>2001-09-08 20:40:56 +0000
commit9a6fe9631efa2022a4c20a00ae7e49561a8014bd (patch)
treee9299baaf6f5328fd68a03958bd06084ca069878 /ext/com/variant.h
parentd4b86e1c5bac94815a09739b5c04dff69705b441 (diff)
downloadphp-git-9a6fe9631efa2022a4c20a00ae7e49561a8014bd.tar.gz
com_*() functions returned an oo-resource instead of an resource id,
thus subsequent com_*() calls to com-returnvalues failed.
Diffstat (limited to 'ext/com/variant.h')
-rw-r--r--ext/com/variant.h19
1 files changed, 17 insertions, 2 deletions
diff --git a/ext/com/variant.h b/ext/com/variant.h
index ce5b4e66ae..3fd11f32e4 100644
--- a/ext/com/variant.h
+++ b/ext/com/variant.h
@@ -3,15 +3,30 @@
#if PHP_WIN32
-#define ALLOC_VARIANT(v) (v) = (VARIANT *) emalloc(sizeof(VARIANT)); \
+#define ALLOC_VARIANT(v) (v) = (VARIANT *) emalloc(sizeof(VARIANT)); \
VariantInit(v);
-#define FREE_VARIANT(v) VariantClear(v); \
+#define FREE_VARIANT(v) VariantClear(v); \
efree(v);
#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_LONG((z), zend_list_insert(obj, IS_COM)); \
+ } else { \
+ php_variant_to_pval((v), (z), codepage TSRMLS_CC); \
+ FREE_VARIANT(v); \
+ }
+
+#define RETVAL_VARIANT(v) ZVAL_VARIANT(return_value, (v));
+#define RETURN_VARIANT(v) RETVAL_VARIANT(v) \
+ return;
+
+
#endif /* PHP_WIN32 */
#endif /* VARIANT_H */