Re: Memory Leak in FreeAltScreen

Bill Pursell <[email protected]> Mon, 27 Mar 2006 05:41:04 +0100
Newsgroups gmane.comp.gnu.screen
Message-ID <[email protected]>
Daniel De Graaf wrote:
> In FreeAltScreen, the w_alt_mlines and w_alt_hlines entries are not
> freed before setting them to zero. This causes a memory leak every
> time a screen is switched, which can be demonstrated by the shell
> script "for a in `seq 1 1000`; do echo test|less -E;done".
> 
> - Daniel De Graaf
> 
> --- resize.c.orig	2003-09-08 09:26:31.000000000 -0500
> +++ resize.c	2006-03-26 13:16:26.000000000 -0600
> @@ -1045,8 +1045,10 @@
> 
>    if (p->w_alt_mlines)
>      for (i = 0; i < p->w_alt_height; i++)
>        FreeMline(p->w_alt_mlines + i);
> +  free(p->w_alt_mlines);
> +  free(p->w_alt_hlines);
>    p->w_alt_mlines = 0;
>    p->w_alt_width = 0;
>    p->w_alt_height = 0;
>    p->w_alt_x = 0;
> 
> 

Freeing a memory address and then assigning to it is a bad idea.  Simply 
freeing it is adequate.