X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=0003-build-fgetc-returns-int-not-char.patch;fp=0003-build-fgetc-returns-int-not-char.patch;h=ebcc4cfcc7c7e3fe42aafca02a94196a0f6050da;hb=b397e49f0f30ea1a1377538130c49300068ba417;hp=0000000000000000000000000000000000000000;hpb=c2f2a9079751562684fb235722b52cb49d30b6aa;p=fedora-riscv.git diff --git a/0003-build-fgetc-returns-int-not-char.patch b/0003-build-fgetc-returns-int-not-char.patch new file mode 100644 index 0000000..ebcc4cf --- /dev/null +++ b/0003-build-fgetc-returns-int-not-char.patch @@ -0,0 +1,31 @@ +From 0c44e5cdbdc525cc1bf1063b6c561efa23d06b0d Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Wed, 10 Aug 2016 15:01:31 +0100 +Subject: [PATCH 3/4] build: fgetc returns int, not char. + +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 +--- + 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 +