# [PATCH] refs.c: fix fread error handling

2 messages from 2013-03-23 to 2013-03-24. Participants: John Keeping, Junio C Hamano.
Thread: https://gitlist.dev/t/33272

## John Keeping, 2013-03-23 17:16

Subject: [PATCH] refs.c: fix fread error handling
Message-ID: <ba7cd71b0ac9a885bd894a0bed608cf682afed6d.1364058591.git.john@keeping.me.uk>
URL: https://gitlist.dev/e/ba7cd71b0ac9a885bd894a0bed608cf682afed6d.1364058591.git.john%40keeping.me.uk

```
fread returns the number of items read, with no special error return.

Commit 98f85ff (reflog: add for_each_reflog_ent_reverse() API -
2013-03-08) introduced a call to fread which checks for an error with
"nread < 0" which is tautological since nread is unsigned.  The correct
check in this case (which tries to read a single item) is "nread != 1".

Signed-off-by: John Keeping <john@keeping.me.uk>
---
I found this because Clang generated a tautological comparison warning
on this line.

 refs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/refs.c b/refs.c
index 56cc93d..de2d8eb 100644
--- a/refs.c
+++ b/refs.c
@@ -2399,7 +2399,7 @@ int for_each_reflog_ent_reverse(const char *refname, each_reflog_ent_fn fn, void
 			return error("cannot seek back reflog for %s: %s",
 				     refname, strerror(errno));
 		nread = fread(buf, cnt, 1, logfp);
-		if (nread < 0)
+		if (nread != 1)
 			return error("cannot read %d bytes from reflog for %s: %s",
 				     cnt, refname, strerror(errno));
 		pos -= cnt;
-- 
1.8.2.411.g65a544e

```

## Junio C Hamano, 2013-03-24 06:50

Subject: Re: [PATCH] refs.c: fix fread error handling
Message-ID: <7vmwtt2svj.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vmwtt2svj.fsf%40alter.siamese.dyndns.org
In-Reply-To: <ba7cd71b0ac9a885bd894a0bed608cf682afed6d.1364058591.git.john@keeping.me.uk>

```
Thanks.

```
