[Rpm-maint] [PATCH] build: fgetc returns int, not char.
Richard W.M. Jones
rjones at redhat.com
Wed Aug 10 14:09:37 UTC 2016
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
More information about the Rpm-maint
mailing list