From f8f44f42eb543ecd944a84facba6c09bf48e7711 Mon Sep 17 00:00:00 2001 From: Chase Douglas Date: Fri, 20 Apr 2012 15:30:30 -0700 Subject: Destroy extension record after last display is removed The extension record is currently leaked and never freed. Signed-off-by: Chase Douglas Signed-off-by: Peter Hutterer --- src/XExtInt.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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 -- cgit v1.2.3