summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndi Gutmans <andi@php.net>1999-09-23 16:13:31 +0000
committerAndi Gutmans <andi@php.net>1999-09-23 16:13:31 +0000
commit63c15d292aa07b2255af42f92c52b021f58b2bd3 (patch)
treee854833723adb58cd4ca19d783828eb286caeaa7
parent4efa22c84e60da3f13e5ba177a55eb0200966cda (diff)
downloadphp-git-63c15d292aa07b2255af42f92c52b021f58b2bd3.tar.gz
- Fix bug #2364.
I haven't checked all of the conversion macros yet but there's a change there are more such bugs there.
-rw-r--r--Zend/zend_operators.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c
index 01e834f75b..ec1b755ed7 100644
--- a/Zend/zend_operators.c
+++ b/Zend/zend_operators.c
@@ -83,7 +83,7 @@ ZEND_API void convert_scalar_to_number(zval *op)
} \
(op) = &(holder); \
} else if ((op)->type==IS_BOOL || (op)->type==IS_RESOURCE) { \
- (holder) = *(op); \
+ (holder).value.lval = (op)->value.lval; \
(holder).type = IS_LONG; \
(op) = &(holder); \
}
@@ -93,11 +93,12 @@ ZEND_API void convert_scalar_to_number(zval *op)
#define zendi_convert_to_long(op, holder, result) \
if (op==result) { \
convert_to_long(op); \
+ } else if ((op)->type==IS_BOOL || (op)->type==IS_RESOURCE) { \
+ (holder).value.lval = (op)->value.lval; \
+ (holder).type = IS_LONG; \
+ (op) = &(holder); \
} else if ((op)->type != IS_LONG) { \
switch ((op)->type) { \
- case IS_RESOURCE: \
- case IS_BOOL: \
- break; \
case IS_DOUBLE: \
(holder).value.lval = (long) (op)->value.dval; \
break; \