From: Junio C Hamano Date: Tue, 23 Jun 2009 23:56:32 GMT Subject: Re: [PATCH] fread does not return negative on error Message-ID: <7vhby64i8f.fsf@alter.siamese.dyndns.org> In-Reply-To: <4A3FB479.2090902@lsrfire.ath.cx> René Scharfe writes: > the following patch is for git. I just removed the unneeded check for > res == 0 from your version. Does it look OK? The patch looks good, and both of our in-tree users do error out when the returned value is 0 (imap-send.c checks with "<= 0" which looks a tad amateurish, though) correctly. Funny, there is no caller of this function in the original context this bug originally found, which I think is linux-2.6/tools/perf ;-). Thanks. > From: Roel Kluin > > size_t res cannot be less than 0. fread returns 0 on error. > > Reported-by: Ingo Molnar > Signed-off-by: Roel Kluin > --- > strbuf.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/strbuf.c b/strbuf.c > index a884960..f03d117 100644 > --- a/strbuf.c > +++ b/strbuf.c > @@ -260,7 +260,7 @@ size_t strbuf_fread(struct strbuf *sb, size_t size, FILE *f) > res = fread(sb->buf + sb->len, 1, size, f); > if (res > 0) > strbuf_setlen(sb, sb->len + res); > - else if (res < 0 && oldalloc == 0) > + else if (oldalloc == 0) > strbuf_release(sb); > return res; > }