Paul Eggert wrote: > Pádraig Brady <[EMAIL PROTECTED]> writes: > >> diff --git a/src/truncate.c b/src/truncate.c >> index 02d4102..fd321c6 100644 >> --- a/src/truncate.c >> +++ b/src/truncate.c >> @@ -189,9 +189,9 @@ do_ftruncate (int fd, char const *fname, off_t ssize, >> rel_mode_t rel_mode) >> } >> >> if (rel_mode == rm_min) >> - nsize = MAX (fsize, ssize); >> + nsize = MAX (fsize, (uintmax_t) ssize); >> else if (rel_mode == rm_max) >> - nsize = MIN (fsize, ssize); >> + nsize = MIN (fsize, (uintmax_t) ssize); >> else if (rel_mode == rm_rdn) >> /* 0..ssize-1 -> 0 */ >> nsize = (fsize / ssize) * ssize; > > This patch does not look right to me. If ssize is negative, it screws up. > > Can ssize be negative? Yes it can.
Not when rel_mode is rm_min or rm_max. > This indicates a bug in the underlying code, which GCC was right to > warn us about, and which we should not have worked around by inserting > casts blindly. As I said in the patch the casts were to confirm the intent, rather than just to silence the errors. Pádraig. _______________________________________________ Bug-coreutils mailing list Bug-coreutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-coreutils