>> From: [EMAIL PROTECTED] >> Operating system: FreeBSD 4.3 >> PHP version: 4.0.6 >> PHP Bug Type: Scripting Engine problem >> Bug description: ++, -- operators does not conert the type of variable. The attached patch should cure it. jeroen, are you on it or should I commit this patch? -- Stanislav Malyshev, Zend Products Engineer [EMAIL PROTECTED] http://www.zend.com/ +972-3-6139665 ext.115
Index: zend_operators.c =================================================================== RCS file: /repository/Zend/zend_operators.c,v retrieving revision 1.114 diff -u -b -r1.114 zend_operators.c --- zend_operators.c 2001/08/26 10:30:19 1.114 +++ zend_operators.c 2001/09/04 16:12:03 @@ -1443,7 +1443,13 @@ { switch (op1->type) { case IS_LONG: + if(op1->value.lval == LONG_MAX) { + /* switch to double */ + double d = (double)op1->value.lval; + ZVAL_DOUBLE(op1, d+1); + } else { op1->value.lval++; + } break; case IS_DOUBLE: op1->value.dval = op1->value.dval + 1; @@ -1459,8 +1465,14 @@ switch (is_numeric_string(strval, op1->value.str.len, &lval, &dval, 0)) { case IS_LONG: + if(lval == LONG_MAX) { + /* switch to double */ + double d = (double)lval; + ZVAL_DOUBLE(op1, d+1); + } else { op1->value.lval = lval+1; op1->type = IS_LONG; + } efree(strval); break; case IS_DOUBLE: @@ -1492,21 +1504,31 @@ switch (op1->type) { case IS_LONG: + if(op1->value.lval == LONG_MIN) { + double d = (double)op1->value.lval; + ZVAL_DOUBLE(op1, d-1); + } else { op1->value.lval--; + } break; case IS_DOUBLE: op1->value.dval = op1->value.dval - 1; break; case IS_STRING: /* Like perl we only support string increment */ - if (op1->value.str.len==0) { /* consider as 0 */ + if (op1->value.str.len == 0) { /* consider as 0 */ STR_FREE(op1->value.str.val); op1->value.lval = -1; op1->type = IS_LONG; break; } else if (is_numeric_string(op1->value.str.val, op1->value.str.len, &lval, NULL, 0)==IS_LONG) { /* long */ STR_FREE(op1->value.str.val); + if(lval == LONG_MIN) { + double d = (double)lval; + ZVAL_DOUBLE(op1, d-1); + } else { op1->value.lval = lval-1; op1->type = IS_LONG; + } break; } break;
-- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]