Just open and close a client that creates cursors in order to
reproduce. In the problem case bits->refcnt is -1 and therefore
bits->devPrivates is never released.

Signed-off-by: Rami Ylimaki <ext-rami.ylim...@nokia.com>
---
 dix/cursor.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/dix/cursor.c b/dix/cursor.c
index d1248c4..660a55b 100644
--- a/dix/cursor.c
+++ b/dix/cursor.c
@@ -86,6 +86,8 @@ FreeCursorBits(CursorBitsPtr bits)
 #ifdef ARGB_CURSOR
     xfree(bits->argb);
 #endif
+    dixFreePrivates(bits->devPrivates);
+    bits->devPrivates = NULL;
     if (bits->refcnt == 0)
     {
        GlyphSharePtr *prev, this;
@@ -100,7 +102,6 @@ FreeCursorBits(CursorBitsPtr bits)
            CloseFont(this->font, (Font)0);
            xfree(this);
        }
-       dixFreePrivates(bits->devPrivates);
        xfree(bits);
     }
 }
-- 
1.6.0.4

_______________________________________________
xorg-devel mailing list
xorg-devel@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to