diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2008-07-08 15:12:45 +0930 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2008-07-10 16:02:54 +0930 |
commit | db86b8839f286e0e2efb5638b8ab2fe608707655 (patch) | |
tree | 44a09d1ba83ad1834270368dafb7c5dc9871148c | |
parent | 08e2c625f620688d35f3b443ffb878e8e991ff57 (diff) |
dix: free GenericMask allocations when destroying window.
-rw-r--r-- | dix/window.c | 13 | ||||
-rw-r--r-- | include/windowstr.h | 2 |
2 files changed, 14 insertions, 1 deletions
diff --git a/dix/window.c b/dix/window.c index 541d19902..a780d64c7 100644 --- a/dix/window.c +++ b/dix/window.c @@ -822,6 +822,8 @@ CreateWindow(Window wid, WindowPtr pParent, int x, int y, unsigned w, static void DisposeWindowOptional (WindowPtr pWin) { + GenericMaskPtr gmask = NULL, next = NULL; + if (!pWin->optional) return; /* @@ -855,6 +857,17 @@ DisposeWindowOptional (WindowPtr pWin) xfree(pWin->optional->access.perm); xfree(pWin->optional->access.deny); + /* Remove generic event mask allocations */ + if (pWin->optional->geMasks) + gmask = pWin->optional->geMasks->geClients; + while(gmask) + { + next = gmask->next; + xfree(gmask); + gmask = next; + } + xfree (pWin->optional->geMasks); + xfree (pWin->optional); pWin->optional = NULL; } diff --git a/include/windowstr.h b/include/windowstr.h index 0e45262d8..2d11f6ec7 100644 --- a/include/windowstr.h +++ b/include/windowstr.h @@ -115,7 +115,7 @@ typedef struct _WindowOpt { #endif struct _OtherInputMasks *inputMasks; /* default: NULL */ DevCursorList deviceCursors; /* default: NULL */ - struct _GenericClientMasks *geMasks;/* default: NULL */ + struct _GenericClientMasks *geMasks; /* default: NULL */ WindowAccessRec access; } WindowOptRec, *WindowOptPtr; |