cvs: Zend / zend_operators.c
| From: | Derick Rethans | Date: | Sun, 14 Jul 2002 09:26:41 +0000 |
| Subject: | cvs: Zend / zend_operators.c | ||
| Groups: | php.zend-engine.cvs | ||
| Request: | Send a blank email to php-zend-engine-cvs+get-243@lists.php.net to get a copy of this message | ||
derick Sun Jul 14 05:26:41 2002 EDT
Modified files:
/Zend zend_operators.c
Log:
- Added 'type juggling' for boolean values.
@- Added 'type juggling' for boolean values. The following conversions are
@ done (Derick):
@ $a = FALSE; $a++; /* $a is now bool(true); */
@ $a = TRUE; $a++; /* $a is now int(2); */
@ $a = FALSE; $a--; /* $a is now int(-1); */
@ $a = TRUE; $a--; /* $a is now bool(false); */
Index: Zend/zend_operators.c
diff -u Zend/zend_operators.c:1.118 Zend/zend_operators.c:1.119
--- Zend/zend_operators.c:1.118 Sat Jun 29 03:38:49 2002
+++ Zend/zend_operators.c Sun Jul 14 05:26:41 2002
@@ -1442,6 +1442,12 @@
ZEND_API int increment_function(zval *op1)
{
switch (op1->type) {
+ case IS_BOOL:
+ if (op1->value.lval) {
+ op1->type = IS_LONG;
+ }
+ op1->value.lval++;
+ break;
case IS_LONG:
if(op1->value.lval == LONG_MAX) {
/* switch to double */
@@ -1504,6 +1510,12 @@
double dval;
switch (op1->type) {
+ case IS_BOOL:
+ if (!op1->value.lval) {
+ op1->type = IS_LONG;
+ }
+ op1->value.lval--;
+ break;
case IS_LONG:
if(op1->value.lval == LONG_MIN) {
double d = (double)op1->value.lval;