--- rxvt-unicode/src/screen.C 2013/02/16 17:26:53 1.434 +++ rxvt-unicode/src/screen.C 2013/03/24 10:15:27 1.436 @@ -256,9 +256,6 @@ if (!prev_row_buf) { - /* - * first time called (or after scr_release) so just malloc everything: don't rely on realloc - */ top_row = 0; term_start = 0; @@ -293,9 +290,14 @@ * add or delete rows as appropriate */ + int common_col = min (prev_ncol, ncol); + for (int row = min (nrow, prev_nrow); row--; ) { - copy_line (drawn_buf [row], prev_drawn_buf [row]); + scr_blank_screen_mem (drawn_buf [row], DEFAULT_RSTYLE); + memcpy (drawn_buf [row].t, prev_drawn_buf [row].t, sizeof (text_t) * common_col); + memcpy (drawn_buf [row].r, prev_drawn_buf [row].r, sizeof (rend_t) * common_col); + copy_line (swap_buf [row], prev_swap_buf [row]); }