summaryrefslogtreecommitdiff
path: root/ext/com
diff options
context:
space:
mode:
authorHarald Radi <phanto@php.net>2001-10-04 18:24:44 +0000
committerHarald Radi <phanto@php.net>2001-10-04 18:24:44 +0000
commit27744e892a9a447279c6cea51ca8dc39061d03d9 (patch)
tree30a51907d82c21cf4ffb95f9d36b560361c08df8 /ext/com
parent744d1fc1ea2b78883a9d3ab2b323890b1eba0ea2 (diff)
downloadphp-git-27744e892a9a447279c6cea51ca8dc39061d03d9.tar.gz
no message
Diffstat (limited to 'ext/com')
-rw-r--r--ext/com/conversion.c32
-rw-r--r--ext/com/conversion.h8
2 files changed, 33 insertions, 7 deletions
diff --git a/ext/com/conversion.c b/ext/com/conversion.c
index 8449e41461..38538c7d8e 100644
--- a/ext/com/conversion.c
+++ b/ext/com/conversion.c
@@ -157,12 +157,12 @@ PHPAPI void php_pval_to_variant_ex2(pval *pval_arg, VARIANT *var_arg, int type,
switch (V_VT(var_arg)) {
case VT_UI1:
convert_to_long_ex(&pval_arg);
- V_UI1(var_arg) = (unsigned char)Z_LVAL_P(pval_arg);
+ V_UI1(var_arg) = (unsigned char) Z_LVAL_P(pval_arg);
break;
case VT_I2:
convert_to_long_ex(&pval_arg);
- V_I2(var_arg) = (short)Z_LVAL_P(pval_arg);
+ V_I2(var_arg) = (short) Z_LVAL_P(pval_arg);
break;
case VT_I4:
@@ -172,7 +172,7 @@ PHPAPI void php_pval_to_variant_ex2(pval *pval_arg, VARIANT *var_arg, int type,
case VT_R4:
convert_to_double_ex(&pval_arg);
- V_R4(var_arg) = (float)Z_DVAL_P(pval_arg);
+ V_R4(var_arg) = (float) Z_DVAL_P(pval_arg);
break;
case VT_R8:
@@ -182,7 +182,11 @@ PHPAPI void php_pval_to_variant_ex2(pval *pval_arg, VARIANT *var_arg, int type,
case VT_BOOL:
convert_to_boolean_ex(&pval_arg);
- V_BOOL(var_arg) = (short)Z_LVAL_P(pval_arg);
+ if (Z_LVAL_P(pval_arg)) {
+ V_BOOL(var_arg) = VT_TRUE;
+ } else {
+ V_BOOL(var_arg) = VT_FALSE;
+ }
break;
case VT_ERROR:
@@ -278,7 +282,13 @@ PHPAPI void php_pval_to_variant_ex2(pval *pval_arg, VARIANT *var_arg, int type,
case VT_BOOL|VT_BYREF:
convert_to_boolean(pval_arg);
- V_BOOLREF(var_arg) = (short FAR*) &Z_LVAL_P(pval_arg);
+ /* emalloc or malloc ? */
+ V_BOOLREF(var_arg) = (short FAR*) pemalloc(sizeof(short), 1);
+ if (Z_LVAL_P(pval_arg)) {
+ *V_BOOLREF(var_arg) = VT_TRUE;
+ } else {
+ *V_BOOLREF(var_arg) = VT_TRUE;
+ }
break;
case VT_ERROR|VT_BYREF:
@@ -584,9 +594,17 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int codepage TS
case VT_BOOL:
if (V_ISBYREF(var_arg)) {
- ZVAL_BOOL(pval_arg, *V_BOOLREF(var_arg));
+ if (*V_BOOLREF(var_arg)) {
+ ZVAL_BOOL(pval_arg, Z_TRUE);
+ } else {
+ ZVAL_BOOL(pval_arg, Z_FALSE);
+ }
} else {
- ZVAL_BOOL(pval_arg, V_BOOL(var_arg));
+ if (V_BOOL(var_arg)) {
+ ZVAL_BOOL(pval_arg, Z_TRUE);
+ } else {
+ ZVAL_BOOL(pval_arg, Z_FALSE);
+ }
}
break;
diff --git a/ext/com/conversion.h b/ext/com/conversion.h
index f16d67306b..b8c534fa22 100644
--- a/ext/com/conversion.h
+++ b/ext/com/conversion.h
@@ -1,6 +1,14 @@
#ifndef CONVERSION_H
#define CONVERSION_H
+/* isn't this defined somewhere else ? */
+
+#define Z_TRUE 1
+#define Z_FALSE 0
+
+#define VT_TRUE -1
+#define VT_FALSE 0
+
BEGIN_EXTERN_C()
PHPAPI void php_pval_to_variant(pval *pval_arg, VARIANT *var_arg, int codepage TSRMLS_DC);