bug-coreutils
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]