summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Wellnhofer <wellnhofer@aevum.de>2014-12-02 23:44:24 +0100
committerNick Wellnhofer <wellnhofer@aevum.de>2014-12-02 23:47:49 +0100
commit7f5ee96078ac6f283767d2b582ea334fe9c18ff4 (patch)
treeb80d1b2a9edbcf1aa12ada60d76801835efbb607
parent4cf29883ef1307de329bf381d53e9aeb8e1f65a7 (diff)
Fix EOF detection
Fixes issue with Ctrl-D having to be pressed twice when reading from terminal.
-rw-r--r--src/blocks.c3
-rw-r--r--src/main.c6
2 files changed, 9 insertions, 0 deletions
diff --git a/src/blocks.c b/src/blocks.c
index 5d11710..4a0a228 100644
--- a/src/blocks.c
+++ b/src/blocks.c
@@ -435,6 +435,9 @@ cmark_node *cmark_parse_file(FILE *f)
while ((bytes = fread(buffer, 1, sizeof(buffer), f)) > 0) {
bool eof = bytes < sizeof(buffer);
S_parser_feed(parser, buffer, bytes, eof);
+ if (eof) {
+ break;
+ }
}
document = cmark_parser_finish(parser);
diff --git a/src/main.c b/src/main.c
index 5d46e00..6134b13 100644
--- a/src/main.c
+++ b/src/main.c
@@ -71,6 +71,9 @@ int main(int argc, char *argv[])
start_timer();
while ((bytes = fread(buffer, 1, sizeof(buffer), fp)) > 0) {
cmark_parser_feed(parser, buffer, bytes);
+ if (bytes < sizeof(buffer)) {
+ break;
+ }
}
end_timer("processing lines");
@@ -86,6 +89,9 @@ int main(int argc, char *argv[])
while ((bytes = fread(buffer, 1, sizeof(buffer), stdin)) > 0) {
cmark_parser_feed(parser, buffer, bytes);
+ if (bytes < sizeof(buffer)) {
+ break;
+ }
}
}