diff --git a/src/basic/fileio.c b/src/basic/fileio.c index febda0abfd..66e1273458 100644 --- a/src/basic/fileio.c +++ b/src/basic/fileio.c @@ -746,11 +746,9 @@ int read_line_full(FILE *f, size_t limit, ReadLineFlags flags, char **ret) { r = safe_fgetc(f, &c); if (r < 0) return r; - if (r == 0) + if (r == 0) /* EOF is definitely EOL */ break; - count++; - eol = categorize_eol(c, flags); if (FLAGS_SET(previous_eol, EOL_ZERO) || @@ -760,10 +758,11 @@ int read_line_full(FILE *f, size_t limit, ReadLineFlags flags, char **ret) { * EOL marker has been seen right before? In either of these three cases we are * done. But first, let's put this character back in the queue. */ assert_se(ungetc(c, f) != EOF); - count--; break; } + count++; + if (eol != EOL_NONE) { previous_eol |= eol; continue;