From: Simon Tatham Date: Wed, 13 Oct 2004 13:35:29 +0000 (+0000) Subject: Fix segfaults in terminal resizing, introduced by re-engineering. X-Git-Tag: 0.58~436 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=8f656a37b51035fcc2276d9121becb1d38cd4512;p=PuTTY.git Fix segfaults in terminal resizing, introduced by re-engineering. [originally from svn r4613] --- diff --git a/terminal.c b/terminal.c index d0911620..0221a564 100644 --- a/terminal.c +++ b/terminal.c @@ -115,8 +115,10 @@ static termline *newline(Terminal *term, int cols, int bce) static void freeline(termline *line) { - sfree(line->chars); - sfree(line); + if (line) { + sfree(line->chars); + sfree(line); + } } static void unlineptr(termline *line) @@ -1003,7 +1005,7 @@ void term_size(Terminal *term, int newrows, int newcols, int newsavelines) { tree234 *newalt; termline **newdisp, *line; - int i, j; + int i, j, oldrows = term->rows; int sblen; int save_alt_which = term->alt_which; @@ -1105,7 +1107,7 @@ void term_size(Terminal *term, int newrows, int newcols, int newsavelines) newdisp[i]->chars[i].attr = ATTR_INVALID; } if (term->disptext) { - for (i = 0; i < term->rows; i++) + for (i = 0; i < oldrows; i++) freeline(term->disptext[i]); } sfree(term->disptext);