commit 2394e52ebcbffc1801ab1383132e31bed9d5440d
parent ee7bbf46504112a1ba0e547f1e2e9f190e55ae1f
Author: Benno Schulenberg <bensberg@justemail.net>
Date: Wed, 16 Jul 2014 08:46:42 +0000
Making sure line renumbering starts far enough back after
undoing a cut or paste. And fixing two memory leaks.
Patch by Mark Majeres.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5067 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Diffstat:
3 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,5 +1,11 @@
+2014-07-16 Mark Majeres <mark@engine12.com>
+ * src/text.c (do_undo): Make sure renumbering starts far enough back
+ after undoing a cut or paste. This fixes a segmentation fault when
+ undoing a repeated cutting and pasting of the first line of a file.
+ * src/nano.c (move_to_filestruct, copy_from_filestruct): Fix two leaks.
+
2014-07-13 David Lawrence Ramsey <pooka109@gmail.com>
- * ChangeLog: Typo fix
+ * ChangeLog: Typo fix.
2014-07-12 Benno Schulenberg <bensberg@justemail.net>
* configure.ac: The warning about datarootdir being ignored is
diff --git a/src/nano.c b/src/nano.c
@@ -360,6 +360,9 @@ void move_to_filestruct(filestruct **file_top, filestruct **file_bot,
*file_bot = openfile->filebot;
}
+ openfile->fileage->next = NULL;
+ free_filestruct(openfile->fileage);
+
/* Renumber starting with the line after the original
* file_bot. */
if (file_bot_save->next != NULL)
@@ -447,6 +450,7 @@ void copy_from_filestruct(filestruct *somebuffer)
/* Put the top and bottom of the current filestruct at the top and
* bottom of a copy of the passed buffer. */
+ free_filestruct(openfile->fileage);
openfile->fileage = copy_filestruct(somebuffer);
openfile->filebot = openfile->fileage;
while (openfile->filebot->next != NULL)
diff --git a/src/text.c b/src/text.c
@@ -504,10 +504,12 @@ void do_undo(void)
case CUT:
undidmsg = _("text cut");
undo_cut(u);
+ f = fsfromline(u->lineno);
break;
case PASTE:
undidmsg = _("text uncut");
undo_paste(u);
+ f = fsfromline(u->lineno);
break;
case ENTER:
undidmsg = _("line break");