--- rxvt-unicode/src/screen.C 2012/06/10 13:07:56 1.421 +++ rxvt-unicode/src/screen.C 2012/06/29 22:10:18 1.425 @@ -171,7 +171,7 @@ int all_rows = total_rows + nrow + nrow; chunk_size = (sizeof (line_t) + rsize + tsize) * all_rows; - chunk = rxvt_malloc (chunk_size); + chunk = chunk_alloc (chunk_size, 0); char *base = (char *)chunk + sizeof (line_t) * all_rows; @@ -227,6 +227,7 @@ screen.bscroll = nrow - 1; void *prev_chunk = chunk; + size_t prev_chunk_size = chunk_size; line_t *prev_drawn_buf = drawn_buf; line_t *prev_swap_buf = swap_buf; line_t *prev_row_buf = row_buf; @@ -410,7 +411,7 @@ if (!drawn_buf [row].valid ()) scr_blank_screen_mem (drawn_buf [row], DEFAULT_RSTYLE); } - free (prev_chunk); + chunk_free (prev_chunk, prev_chunk_size); free (tabs); tabs = (char *)rxvt_malloc (ncol); @@ -431,8 +432,12 @@ void ecb_cold rxvt_term::scr_release () NOTHROW { - free (chunk); chunk = 0; row_buf = 0; - free (tabs); tabs = 0; + chunk_free (chunk, chunk_size); + chunk = 0; + row_buf = 0; + + free (tabs); + tabs = 0; } /* ------------------------------------------------------------------------- */