inserting: don't bother zero-terminating every single character

Just let read_line() zero-terminate the intermediate buffer when
the line is complete.
master
Benno Schulenberg 2016-04-17 12:34:07 +02:00
parent bcdc90e85f
commit c5b8f52c07
1 changed files with 2 additions and 4 deletions

View File

@ -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. */ /* Convert nulls to newlines. buf_len is the string's real length. */
unsunder(buf, buf_len); unsunder(buf, buf_len);
buf[buf_len] = '\0';
assert(openfile->fileage != NULL && strlen(buf) == buf_len); 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); fileptr = read_line(buf, len, fileptr);
num_lines++; num_lines++;
/* Reset buffer and length in preparation for the next line. */ /* Reset the length in preparation for the next line. */
buf[0] = '\0';
len = 0; len = 0;
#ifndef NANO_TINY #ifndef NANO_TINY
/* If it's a Mac file ('\r' without '\n' on the first line if we /* 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 /* Store the character after the \r as the first character
* of the next line. */ * of the next line. */
buf[0] = input; buf[0] = input;
buf[1] = '\0';
len = 1; len = 1;
#endif #endif
} else { } 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 - 1] = input;
buf[len] = '\0';
} }
} }