From c5b8f52c071e8a94f6a1db480c95dad0a415847a Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Sun, 17 Apr 2016 12:34:07 +0200 Subject: [PATCH] inserting: don't bother zero-terminating every single character Just let read_line() zero-terminate the intermediate buffer when the line is complete. --- src/files.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/files.c b/src/files.c index 18079e80..e59a038a 100644 --- 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'; } }