[Rpm-maint] [PATCH] build: fgetc returns int, not char.

Neal Gompa ngompa13 at gmail.com
Wed Aug 10 20:45:16 UTC 2016


On Wed, Aug 10, 2016 at 10:09 AM, Richard W.M. Jones <rjones at redhat.com> wrote:
> Returning the value into a char is a mistake on all platforms, but is
> particularly bad on RISC-V.  On that platform (like ARM) char is
> unsigned.  Therefore EOF (-1) is returned as 255, and the subsequent
> test 'c == EOF' ('255 == -1') fails causing an infinite loop.
>
> Signed-off-by: Richard W.M. Jones <rjones at redhat.com>
> ---
>  build/parseSpec.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/build/parseSpec.c b/build/parseSpec.c
> index 85b0ba3..28f00bc 100644
> --- a/build/parseSpec.c
> +++ b/build/parseSpec.c
> @@ -323,7 +323,7 @@ retry:
>
>      /* Make sure we have something in the read buffer */
>      if (!(ofi->readPtr && *(ofi->readPtr))) {
> -       char c;
> +       int c;
>         int i = 0;
>
>         while((c = fgetc(ofi->fp)) != EOF) {
> --
> 2.7.4
>

This patch looks good to me. Though, should we care about the size of
the integer?



-- 
真実はいつも一つ!/ Always, there's only one truth!


More information about the Rpm-maint mailing list