The patch is attached, for line-breaking reasons.

I also noted a probably-wrong if-statement, added a comment about that,
but didn't fix it. Would someone have a look at it.

IMPORTANT: did *not* test the patch, as I doen't have the equip here to
compile.

Greetz,
Jeroen

Jeroen van Wolffelaar
[EMAIL PROTECTED]
http://www.A-Eskwadraat.nl/~jeroen
Index: zend_operators.c
===================================================================
RCS file: /repository/Zend/zend_operators.c,v
retrieving revision 1.100
diff -u -r1.100 zend_operators.c
--- zend_operators.c    2001/05/10 12:58:31     1.100
+++ zend_operators.c    2001/06/26 12:09:17
@@ -597,6 +597,11 @@
                        return SUCCESS;
                }
                if (result != op1) {
+                       /* jeroen: this is not implied by result!=op1
+                        * condition should be: result==op1, then
+                        * result!=op2 is implied because of the 
+                        * previous if-statement 
+                        * Note: not sure on this one, so left unchanged */
                        /* $a += $b */
                        *result = *op1;
                        zval_copy_ctor(result);
@@ -611,7 +616,7 @@
        if (op1->type == IS_LONG && op2->type == IS_LONG) {
                double dval = (double) op1->value.lval + (double) op2->value.lval;
 
-               if (dval > (double) LONG_MAX) {
+               if (dval > (double) LONG_MAX || dval < (double) LONG_MIN ) {
                        result->value.dval = dval;
                        result->type = IS_DOUBLE;
                } else {
@@ -648,7 +653,7 @@
        if (op1->type == IS_LONG && op2->type == IS_LONG) {
                double dval = (double) op1->value.lval - (double) op2->value.lval;
 
-               if (dval < (double) LONG_MIN) {
+               if (dval > (double) LONG_MAX || dval < (double) LONG_MIN) {
                        result->value.dval = dval;
                        result->type = IS_DOUBLE;
                } else {
@@ -685,7 +690,7 @@
        if (op1->type == IS_LONG && op2->type == IS_LONG) {
                double dval = (double) op1->value.lval * (double) op2->value.lval;
 
-               if (dval > (double) LONG_MAX) {
+               if (dval > (double) LONG_MAX || dval < (double) LONG_MIN) {
                        result->value.dval = dval;
                        result->type = IS_DOUBLE;
                } else {
-- 
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]

Reply via email to