[PATCH] fix strbuf take #2
authorJunio C Hamano <junkio@cox.net>
Thu, 19 May 2005 06:34:03 +0000 (23:34 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Thu, 19 May 2005 14:31:23 +0000 (07:31 -0700)
I just remembered why I placed that bogus "sb->len ==0 implies
sb->eof" condition there.  We need at least something like this
to catch the normal EOF (that is, line termination immediately
followed by EOF) case.  "if (feof(fp))" fires when we have
already read the eof, not when we are about read it.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
strbuf.c

index 6543308..672a1e4 100644 (file)
--- a/strbuf.c
+++ b/strbuf.c
@@ -37,6 +37,8 @@ void read_line(struct strbuf *sb, FILE *fp, int term) {
                        break;
                strbuf_add(sb, ch);
        }
+       if (ch == EOF && sb->len == 0)
+               sb->eof = 1;
        strbuf_end(sb);
 }