commit c5b8f52c071e8a94f6a1db480c95dad0a415847a
parent bcdc90e85fe0e2fbd563a1160ea463580aeb0aa0
Author: Benno Schulenberg <bensberg@justemail.net>
Date: Sun, 17 Apr 2016 12:34:07 +0200
inserting: don't bother zero-terminating every single character
Just let read_line() zero-terminate the intermediate buffer when
the line is complete.
Diffstat:
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/src/files.c b/src/files.c
@@ -685,6 +685,7 @@ filestruct *read_line(char *buf, size_t buf_len, filestruct *prevnode)
/* Convert nulls to newlines. buf_len is the string's real length. */
unsunder(buf, buf_len);
+ buf[buf_len] = '\0';
assert(openfile->fileage != NULL && strlen(buf) == buf_len);
@@ -778,8 +779,7 @@ void read_file(FILE *f, int fd, const char *filename, bool undoable, bool checkw
fileptr = read_line(buf, len, fileptr);
num_lines++;
- /* Reset buffer and length in preparation for the next line. */
- buf[0] = '\0';
+ /* Reset the length in preparation for the next line. */
len = 0;
#ifndef NANO_TINY
/* If it's a Mac file ('\r' without '\n' on the first line if we
@@ -800,7 +800,6 @@ void read_file(FILE *f, int fd, const char *filename, bool undoable, bool checkw
/* Store the character after the \r as the first character
* of the next line. */
buf[0] = input;
- buf[1] = '\0';
len = 1;
#endif
} else {
@@ -816,7 +815,6 @@ void read_file(FILE *f, int fd, const char *filename, bool undoable, bool checkw
}
buf[len - 1] = input;
- buf[len] = '\0';
}
}