commit c208ef7f2316c2136229e414e2898d24c8332678
parent c838a4cd45c4e068cda72f079de8a6bd909afa7b
Author: David Lawrence Ramsey <pooka109@gmail.com>
Date: Wed, 26 Apr 2006 19:03:50 +0000
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
Diffstat:
1 file changed, 17 insertions(+), 5 deletions(-)
diff --git 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