[PATCH libXi] Destroy extension record after last display is removed

Peter Hutterer peter.hutterer at who-t.net
Sun Apr 22 22:08:05 PDT 2012


On Fri, Apr 20, 2012 at 03:30:30PM -0700, Chase Douglas wrote:
> The extension record is currently leaked and never freed.
> 
> Signed-off-by: Chase Douglas <chase.douglas at canonical.com>
> ---
>  src/XExtInt.c |   11 ++++++++++-
>  1 files changed, 10 insertions(+), 1 deletions(-)
> 
> diff --git a/src/XExtInt.c b/src/XExtInt.c
> index 43738a2..27638bd 100644
> --- a/src/XExtInt.c
> +++ b/src/XExtInt.c
> @@ -434,7 +434,16 @@ XInputClose(
>  	XFree((char *)((XInputData *) info->data)->vers);
>  	XFree((char *)info->data);
>      }
> -    return XextRemoveDisplay(xinput_info, dpy);
> +
> +    if (!XextRemoveDisplay(xinput_info, dpy))
> +        return 0;
> +
> +    if (xinput_info->ndisplays == 0) {
> +        XextDestroyExtension(xinput_info);
> +        xinput_info = NULL;
> +    }
> +
> +    return 1;
>  }
>  
>  static int
> -- 
> 1.7.9.1

with this patch applied and a grep over the libX* directories, we now have 2
extensions calling XextDestroyExtension(). Can we automate this in
XextRemoveDisplay somehow?

applied, f8f44f42eb543ecd944a84facba6c09bf48e7711

Cheers,
  Peter


More information about the xorg-devel mailing list