xfreerdp: fix segfault when closing.
authorVic Lee <llyzs@163.com>
Mon, 22 Aug 2011 09:21:39 +0000 (17:21 +0800)
committerVic Lee <llyzs@163.com>
Mon, 22 Aug 2011 09:21:39 +0000 (17:21 +0800)
client/X11/xf_window.c

index 33045f9..4d07b78 100644 (file)
@@ -357,9 +357,14 @@ void xf_SetWindowIcon(xfInfo* xfi, xfWindow* window, rdpIcon* icon)
 
 void xf_DestroyWindow(xfInfo* xfi, xfWindow* window)
 {
-       XFreeGC(xfi->display, window->gc);
-       XFreePixmap(xfi->display, window->surface);
-       XUnmapWindow(xfi->display, window->handle);
-       XDestroyWindow(xfi->display, window->handle);
+       if (window->gc)
+               XFreeGC(xfi->display, window->gc);
+       if (window->surface)
+               XFreePixmap(xfi->display, window->surface);
+       if (window->handle)
+       {
+               XUnmapWindow(xfi->display, window->handle);
+               XDestroyWindow(xfi->display, window->handle);
+       }
        xfree(window);
 }