bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: truncate.c fails to compile on make distcheck


From: Paul Eggert
Subject: Re: truncate.c fails to compile on make distcheck
Date: Fri, 27 Jun 2008 16:25:55 -0700
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.2 (gnu/linux)

Pádraig Brady <address@hidden> 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.

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.  The code should be inspected carefully to make sure
that it does the right thing when asked to truncate a file to a
negative offset.




reply via email to

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