cvs: php4(PHP_4_0_7) /ext/com COM.c variant.h
| From: | Harald Radi | Date: | Sat, 08 Sep 2001 21:02:35 +0000 |
| Subject: | cvs: php4(PHP_4_0_7) /ext/com COM.c variant.h | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-7318@lists.php.net to get a copy of this message | ||
phanto Sat Sep 8 17:02:35 2001 EDT
Modified files: (Branch: PHP_4_0_7)
/php4/ext/com COM.c variant.h
Log:
MFH
Index: php4/ext/com/COM.c
diff -u php4/ext/com/COM.c:1.50.2.1 php4/ext/com/COM.c:1.50.2.2
--- php4/ext/com/COM.c:1.50.2.1 Mon Aug 20 04:56:12 2001
+++ php4/ext/com/COM.c Sat Sep 8 17:02:34 2001
@@ -437,7 +437,7 @@
PHP_INI_END()
-/* {{{ proto int com_load(string module_name [, string remote_host [, int codepage[, string
typelib]]])
+/* {{{ proto int com_load(string module_name [, string remote_host [, int codepage [, string
typelib]]])
Loads a COM module */
PHP_FUNCTION(com_load)
{
@@ -804,9 +804,8 @@
RETURN_FALSE;
}
- php_variant_to_pval(var_result, return_value, codepage TSRMLS_CC);
+ RETVAL_VARIANT(var_result);
- FREE_VARIANT(var_result);
efree(arguments);
}
/* }}} */
@@ -1049,9 +1048,7 @@
RETURN_FALSE;
}
- php_variant_to_pval(var_result, return_value, codepage TSRMLS_CC);
-
- FREE_VARIANT(var_result);
+ RETVAL_VARIANT(var_result);
}
/* }}} */
@@ -1082,7 +1079,8 @@
/* }}} */
-/* {{{ proto bool com_load_typelib(string typelib_name[, int case_insensitiv]) */
+/* {{{ proto bool com_load_typelib(string typelib_name [, int case_insensitiv])
+ Loads a Typelib */
PHP_FUNCTION(com_load_typelib)
{
pval *arg_typelib, *arg_cis;
Index: php4/ext/com/variant.h
diff -u php4/ext/com/variant.h:1.2 php4/ext/com/variant.h:1.2.2.1
--- php4/ext/com/variant.h:1.2 Mon Aug 13 19:39:10 2001
+++ php4/ext/com/variant.h Sat Sep 8 17:02:34 2001
@@ -3,14 +3,29 @@
#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 */