From c208ef7f2316c2136229e414e2898d24c8332678 Mon Sep 17 00:00:00 2001 From: David Lawrence Ramsey Date: Wed, 26 Apr 2006 19:03:50 +0000 Subject: [PATCH] fix breakage when NO_NEWLINES is FALSE and we copy text that would require adding a new magicline then git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3440 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- src/cut.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/cut.c b/src/cut.c index e3ca576e..ec224b9f 100644 --- a/src/cut.c +++ b/src/cut.c @@ -115,6 +115,7 @@ void do_cut_text( /* The current end of the cutbuffer, before we add text to * it. */ bool old_mark_set = openfile->mark_set; + bool old_no_newlines = ISSET(NO_NEWLINES); #endif assert(openfile->current != NULL && openfile->current->data != NULL); @@ -132,11 +133,17 @@ void do_cut_text( } #ifndef NANO_TINY - if (cutbuffer != NULL) { - /* If the cutbuffer isn't empty, save where it currently ends. - * This is where the new text will be added. */ - cb_save = cutbottom; - cb_save->data += strlen(cb_save->data); + if (copy_text) { + if (cutbuffer != NULL) { + /* If the cutbuffer isn't empty, save where it currently + * ends. This is where the new text will be added. */ + cb_save = cutbottom; + cb_save->data += strlen(cb_save->data); + } + + /* Set NO_NEWLINES to TRUE, so that we don't disturb the last + * line of the file when moving text to the cutbuffer. */ + SET(NO_NEWLINES); } #endif @@ -169,6 +176,11 @@ void do_cut_text( if (cutbuffer != NULL) copy_from_filestruct((cb_save != NULL) ? cb_save : cutbuffer, cutbottom); + + /* Set NO_NEWLINES back to what it was before, since we're done + * disturbing the text. */ + if (!old_no_newlines) + UNSET(NO_NEWLINES); } else #endif /* Leave the text in the cutbuffer, and mark the file as -- 2.39.5