commit ee43ea6a749856051b2d7ea1cfc2c20ca5095452
parent d4cf1fd0ca6a5f39cf34dc94d84bd3337658f0da
Author: David Lawrence Ramsey <pooka109@gmail.com>
Date: Sun, 22 Apr 2007 15:04:05 +0000
in backup_lines(), avoid a segfault when the mark begins and ends on the
line after the last line of the paragraph
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4099 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Diffstat:
2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,3 +1,8 @@
+2007-04-22 David Lawrence Ramsey <pooka109@gmail.com>
+
+ * text.c (backup_lines): Avoid a segfault when the mark begins
+ and ends on the line after the last line of the paragraph.
+
2007-04-21 David Lawrence Ramsey <pooka109@gmail.com>
* files.c (do_writeout): If we're in restricted mode, we're not
diff --git a/src/text.c b/src/text.c
@@ -1212,9 +1212,16 @@ void backup_lines(filestruct *first_line, size_t par_len)
* line, putting first_line, edittop, current, and mark_begin at the
* same lines in the copied paragraph that they had in the original
* paragraph. */
- if (openfile->current != openfile->fileage)
+ if (openfile->current != openfile->fileage) {
top = openfile->current->prev;
- else
+#ifndef NANO_TINY
+ if (old_mark_set &&
+ openfile->current->lineno == mb_lineno_save) {
+ openfile->mark_begin = openfile->current;
+ openfile->mark_begin_x = mark_begin_x_save;
+ }
+#endif
+ } else
top = openfile->current;
for (i = par_len; i > 0 && top != NULL; i--) {
if (top->lineno == fl_lineno_save)