--- rxvt-unicode/src/screen.C 2011/07/08 00:23:22 1.389 +++ rxvt-unicode/src/screen.C 2011/07/10 00:40:17 1.393 @@ -205,7 +205,7 @@ talloc = new rxvt_salloc (ncol * sizeof (text_t)); ralloc = new rxvt_salloc (ncol * sizeof (rend_t)); - row_buf = (line_t *)rxvt_calloc (total_rows + nrow, sizeof (line_t)); + row_buf = (line_t *)rxvt_calloc (total_rows , sizeof (line_t)); drawn_buf = (line_t *)rxvt_calloc (nrow , sizeof (line_t)); swap_buf = (line_t *)rxvt_calloc (nrow , sizeof (line_t)); @@ -277,7 +277,7 @@ } line_t *old_buf = row_buf; - row_buf = (line_t *)rxvt_calloc (total_rows + nrow, sizeof (line_t)); + row_buf = (line_t *)rxvt_calloc (total_rows, sizeof (line_t)); int p = MOD (term_start + prev_nrow, prev_total_rows); // previous row int pend = MOD (term_start + top_row , prev_total_rows); @@ -646,7 +646,7 @@ // sever bottommost line { - line_t &l = ROW(row2 - 1); + line_t &l = ROW(row2); l.is_longer (0); l.touch (); } @@ -748,7 +748,7 @@ min_it (count, rows); - line_t *temp_buf = row_buf + total_rows; + line_t *temp_buf = rxvt_temp_buf (rows); for (int row = 0; row < rows; row++) { @@ -763,11 +763,10 @@ // sever bottommost line { - line_t &l = ROW(row2 - 1); + line_t &l = ROW(row2); l.is_longer (0); l.touch (); } - } return count;