]> git.wh0rd.org Git - nano.git/commitdiff
Spoofing a line number for the redoing of an INSERT, because
authorBenno Schulenberg <bensberg@justemail.net>
Wed, 28 Oct 2015 20:24:15 +0000 (20:24 +0000)
committerBenno Schulenberg <bensberg@justemail.net>
Wed, 28 Oct 2015 20:24:15 +0000 (20:24 +0000)
'u->mark_begin_lineno' is being used as the length of the insertion.

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5375 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/text.c

index 9c19c97569b060f7a569650b7e73010698b7ff83..cf8993da9b8437dc2b3e70b1442f070c9fd15928 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2015-10-28  Benno Schulenberg  <bensberg@justemail.net>
+       * src/text.c (do_redo): For an INSERT, 'u->mark_begin_lineno' is not
+       an actual line number, so spoof it.  It can be spoofed, because 'f'
+       is not used for the INSERT case.  This fixes Savannah bug #45524.
+
 2015-10-27  Benno Schulenberg  <bensberg@justemail.net>
        * src/move.c (do_next_word): Rewrite this function to use the same
        logic as do_prev_word(), reducing its number of lines to half.
index ffea145b42ae51e94d66ddbaf38ce495b941e2bc..e1b42f7880a2c426e0cc7eb33b373287a07adcad 100644 (file)
@@ -639,7 +639,7 @@ void do_redo(void)
        return;
     }
 
-    filestruct *f = fsfromline(u->mark_begin_lineno);
+    filestruct *f = fsfromline(u->type == INSERT ? 1 : u->mark_begin_lineno);
     if (!f) {
        statusbar(_("Internal error: can't match line %d.  Please save your work."), u->mark_begin_lineno);
        return;