quotearg: don't attempt to store 1 << 31 into an "int"
authorJim Meyering <meyering@fb.com>
Tue, 19 Nov 2013 01:35:01 +0000 (17:35 -0800)
committerJim Meyering <meyering@fb.com>
Fri, 22 Nov 2013 16:15:12 +0000 (08:15 -0800)
commit831b84c59ef413c57a36b67344467d66a8a2ba70
tree6f3933ca9f3cfaf9081c8d5f93fdf552e26b1c8e
parent8b40415718be86c3a37388ba35804be74b8f376e
quotearg: don't attempt to store 1 << 31 into an "int"

* lib/quotearg.c (quotearg_buffer_restyled): Building coreutils with
gcc's new -fsanitize=undefined and running its tests triggered some
new test failures due to undefined behavior, all with this diagnostic:
  lib/quotearg.c:629:62: runtime error: left shift of 1 by 31 places \
    cannot be represented in type int
Rather than shifting "1" left to form a mask, shift the bits right and
simply use "1" as the mask.
Co-authored-by: Paul Eggert <eggert@cs.ucla.edu>
ChangeLog
lib/quotearg.c