copying: with --nonewlines, don't add a final newline to the cutbuffer

This fixes https://savannah.gnu.org/bugs/?58086.

Bug existed since commit f52b6cf1 from yesterday.
master
Benno Schulenberg 2020-03-31 19:08:15 +02:00
parent 96046f1e82
commit 4b814698bd
1 changed files with 10 additions and 1 deletions

View File

@ -564,6 +564,7 @@ void copy_marked_region(void)
void copy_text(void)
{
bool at_eol = (openfile->current->data[openfile->current_x] == '\0');
bool on_last_line = (openfile->current->next == NULL);
linestruct *addition;
if (openfile->mark || openfile->last_action != COPY || !keep_cutbuffer) {
@ -610,11 +611,19 @@ void copy_text(void)
} else {
addition->data = copy_of(openfile->current->data);
if (cutbuffer == NULL) {
if (cutbuffer == NULL && on_last_line && ISSET(NO_NEWLINES)) {
cutbuffer = addition;
cutbottom = addition;
} else if (cutbuffer == NULL) {
cutbuffer = addition;
cutbottom = make_new_node(cutbuffer);
cutbottom->data = copy_of("");
cutbuffer->next = cutbottom;
} else if (on_last_line && ISSET(NO_NEWLINES)) {
addition->prev = cutbottom->prev;
addition->prev->next = addition;
delete_node(cutbottom);
cutbottom = addition;
} else {
addition->prev = cutbottom->prev;
addition->prev->next = addition;