From edb1ab8186f0fdf6cb783186468edf39775ae1bc Mon Sep 17 00:00:00 2001 From: kcwu Date: Thu, 10 Feb 2005 07:51:37 +0000 Subject: bug fix: correctly adjustline() on current line with big buffer git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@2489 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- mbbsd/edit.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/mbbsd/edit.c b/mbbsd/edit.c index db6ef395..f827bfdb 100644 --- a/mbbsd/edit.c +++ b/mbbsd/edit.c @@ -723,10 +723,9 @@ split(textline_t * line, int pos) strcat(p->data + spcs, ptr); ptr[0] = '\0'; - insert_line(line, p); - line = adjustline(line, line->len); if (line == curr_buf->currline && pos <= curr_buf->currpnt) { - // XXX never reached !? since line is a new allocated memory + line = adjustline(line, line->len); + insert_line(line, p); curr_buf->currline = p; if (pos == curr_buf->currpnt) curr_buf->currpnt = spcs; @@ -734,6 +733,9 @@ split(textline_t * line, int pos) curr_buf->currpnt -= pos; curr_buf->curr_window_line++; curr_buf->currln++; + } else { + p = adjustline(p, p->len); + insert_line(line, p); } curr_buf->redraw_everything = YEA; } @@ -859,7 +861,10 @@ undelete_line(void) curr_buf->indent_mode = tmp.indent_mode; curr_buf->curr_window_line = tmp.curr_window_line; + assert(curr_buf->currline->prev); + curr_buf->currline = adjustline(curr_buf->currline, curr_buf->currline->len); curr_buf->currline = curr_buf->currline->prev; + curr_buf->currline = adjustline(curr_buf->currline, WRAPMARGIN); if (curr_buf->currline->prev == NULL) { curr_buf->top_of_win = curr_buf->currline; -- cgit v1.2.3