[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
fix for "expr -9223372036854775808 '*' -1" overflow check
From: |
Paul Eggert |
Subject: |
fix for "expr -9223372036854775808 '*' -1" overflow check |
Date: |
Wed, 07 Jun 2006 19:55:18 -0700 |
My change yesterday didn't report overflow for the special case
-9223372036854775808 '*' -1. I installed this patch.
2006-06-07 Paul Eggert <address@hidden>
* src/expr.c (eval4): Detect overflow properly when multiplying
INTMAX_MIN * -1.
--- src/expr.c 7 Jun 2006 05:58:57 -0000 1.113
+++ src/expr.c 8 Jun 2006 02:53:25 -0000 1.114
@@ -640,7 +640,9 @@ eval4 (bool evaluate)
if (fxn == multiply)
{
val = l->u.i * r->u.i;
- if (! (l->u.i == 0 || val / l->u.i == r->u.i))
+ if (! (l->u.i == 0 || r->u.i == 0
+ || ((val < 0) == ((l->u.i < 0) ^ (r->u.i < 0))
+ && val / l->u.i == r->u.i)))
integer_overflow ('*');
}
else
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- fix for "expr -9223372036854775808 '*' -1" overflow check,
Paul Eggert <=