intprops: shorten, to pacify gcc -Woverlength-strings
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 24 May 2011 23:45:14 +0000 (16:45 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 24 May 2011 23:48:13 +0000 (16:48 -0700)
* lib/intprops.h (_GL_INT_CONVERT, _GL_INT_NEGATE_CONVERT):
(_GL_BINARY_OP_OVERFLOW): Say "0 * (x)" rather than "(x) - (x)",
so that, for example, verify (INT_MULTIPLY_OVERFLOW (...)) is less
likely to run afoul of C compiler limits for string constant lengths.
See <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00528.html>.

ChangeLog
lib/intprops.h

index 270866e7acf02c277e10a5de3a1c24f4b6349384..fee8b5ad31da29184c1174a0680ee101ac7d2f4c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2011-05-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       intprops: shorten, to pacify gcc -Woverlength-strings
+       * lib/intprops.h (_GL_INT_CONVERT, _GL_INT_NEGATE_CONVERT):
+       (_GL_BINARY_OP_OVERFLOW): Say "0 * (x)" rather than "(x) - (x)",
+       so that, for example, verify (INT_MULTIPLY_OVERFLOW (...)) is less
+       likely to run afoul of C compiler limits for string constant lengths.
+       See <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00528.html>.
+
 2011-05-24  Eric Blake  <eblake@redhat.com>
 
        docs: document recently fixed glibc printf bug
index 293204ab43a12cf92f510ed84a336324af83d824..d722648555b3bba432e0ce2189ad5225e34bfb4d 100644 (file)
 /* Return a integer value, converted to the same type as the integer
    expression E after integer type promotion.  V is the unconverted value.
    E should not have side effects.  */
-#define _GL_INT_CONVERT(e, v) ((e) - (e) + (v))
+#define _GL_INT_CONVERT(e, v) (0 * (e) + (v))
 
 /* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see
    <http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00406.html>.  */
-#define _GL_INT_NEGATE_CONVERT(e, v) ((e) - (e) - (v))
+#define _GL_INT_NEGATE_CONVERT(e, v) (0 * (e) - (v))
 
 /* The extra casts in the following macros work around compiler bugs,
    e.g., in Cray C 5.0.3.0.  */
    Arguments should be free of side effects.  */
 #define _GL_BINARY_OP_OVERFLOW(a, b, op_result_overflow)        \
   op_result_overflow (a, b,                                     \
-                      _GL_INT_MINIMUM ((b) - (b) + (a)),        \
-                      _GL_INT_MAXIMUM ((b) - (b) + (a)))
+                      _GL_INT_MINIMUM (0 * (b) + (a)),          \
+                      _GL_INT_MAXIMUM (0 * (b) + (a)))
 
 #endif /* _GL_INTPROPS_H */