diff --git a/ChangeLog b/ChangeLog index 1942c631..df3e34f6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-04-22 David Lawrence Ramsey + + * 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 * files.c (do_writeout): If we're in restricted mode, we're not diff --git a/src/text.c b/src/text.c index 5746d3b6..58219fe0 100644 --- 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)