From 43579a3b9501bfb578c35e66c565e1974c77efab Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Tue, 5 Dec 2017 00:28:27 +0100 Subject: Events.c: move variable to inner scope --- nx-X11/programs/Xserver/hw/nxagent/Rootless.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'nx-X11') diff --git a/nx-X11/programs/Xserver/hw/nxagent/Rootless.c b/nx-X11/programs/Xserver/hw/nxagent/Rootless.c index f42f9d99d..364f0cbe4 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Rootless.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Rootless.c @@ -251,7 +251,6 @@ Bool nxagentRootlessTreesMatch() Window parent_return; Window *children_return; unsigned int nChildrenReturn; - WindowPtr pW; WindowPtr pTestWin = screenInfo.screens[0]->root -> firstChild; Bool treesMatch = True; Status result; @@ -270,7 +269,7 @@ Bool nxagentRootlessTreesMatch() while (nChildrenReturn > 0) { - pW = nxagentWindowPtr(children_return[--nChildrenReturn]); + WindowPtr pW = nxagentWindowPtr(children_return[--nChildrenReturn]); if (!pW) { -- cgit v1.2.3 From 0938cf83d37407267e17a2620da8ce1fc8264be8 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Tue, 5 Dec 2017 00:28:51 +0100 Subject: Events.c: drop unused variable --- nx-X11/programs/Xserver/hw/nxagent/Window.c | 3 --- 1 file changed, 3 deletions(-) (limited to 'nx-X11') diff --git a/nx-X11/programs/Xserver/hw/nxagent/Window.c b/nx-X11/programs/Xserver/hw/nxagent/Window.c index 2fa6bc136..849317f25 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Window.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Window.c @@ -1456,7 +1456,6 @@ void nxagentConfigureWindow(WindowPtr pWin, unsigned int mask) Window parent_return; Window *children_return; unsigned int nchildren_return; - Window *pw; Status result; result = XQueryTree(nxagentDisplay, DefaultRootWindow(nxagentDisplay), @@ -1464,8 +1463,6 @@ void nxagentConfigureWindow(WindowPtr pWin, unsigned int mask) if (result) { - pw = children_return; - fprintf(stderr, "nxagentConfigureWindow: Children of the root: "); while(nchildren_return > 0) { -- cgit v1.2.3 From cdaec755d8800d3cb78e3d7c65b4320c067e27cf Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Tue, 5 Dec 2017 00:29:10 +0100 Subject: Make sure XQueryTree results are freed Fixes ArcticaProject/nx-libs#585 --- nx-X11/programs/Xserver/hw/nxagent/Events.c | 32 ++++++++++++++------------- nx-X11/programs/Xserver/hw/nxagent/Rootless.c | 2 +- nx-X11/programs/Xserver/hw/nxagent/Window.c | 12 +++++----- 3 files changed, 24 insertions(+), 22 deletions(-) (limited to 'nx-X11') diff --git a/nx-X11/programs/Xserver/hw/nxagent/Events.c b/nx-X11/programs/Xserver/hw/nxagent/Events.c index e360d21f6..4e08cd2c2 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Events.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Events.c @@ -426,13 +426,12 @@ void nxagentRemoteWindowsTree(Window window, int level) int i, j; unsigned long rootWin, parentWin; unsigned int numChildren; - unsigned long *childList; + unsigned long *childList = NULL; if (!XQueryTree(nxagentDisplay, window, &rootWin, &parentWin, &childList, &numChildren)) { fprintf(stderr, "nxagentRemoteWindowsTree - XQueryTree failed.\n"); - return; } @@ -3185,7 +3184,7 @@ int nxagentCheckWindowConfiguration(XConfigureEvent* X) #endif } - if (result && nchildren_return) + if (children_return) { XFree(children_return); } @@ -3540,6 +3539,12 @@ int nxagentHandleReparentNotify(XEvent* X) result = XQueryTree(nxagentDisplay, w, &root_return, &parent_return, &children_return, &nchildren_return); + if (children_return) + { + XFree(children_return); + children_return = NULL; + } + if (!result) { #ifdef WARNING @@ -3548,11 +3553,6 @@ int nxagentHandleReparentNotify(XEvent* X) break; } - - if (result && children_return) - { - XFree(children_return); - } } if (w && !nxagentWindowPtr(w)) @@ -3581,9 +3581,10 @@ int nxagentHandleReparentNotify(XEvent* X) #endif } - if (result && nchildren_return) + if (children_return) { XFree(children_return); + children_return = NULL; } } else @@ -3647,17 +3648,18 @@ int nxagentHandleReparentNotify(XEvent* X) { result = XQueryTree(nxagentDisplay, w, &rootReturn, &parentReturn, &childrenReturn, &nchildrenReturn); - - if (parentReturn == rootReturn || parentReturn == 0 || result == 0) + + if (childrenReturn) { - break; + XFree(childrenReturn); + childrenReturn = NULL; } - if (result == 1 && childrenReturn != NULL) + if (parentReturn == rootReturn || parentReturn == 0 || result == 0) { - XFree(childrenReturn); + break; } - + w = parentReturn; } while (True); diff --git a/nx-X11/programs/Xserver/hw/nxagent/Rootless.c b/nx-X11/programs/Xserver/hw/nxagent/Rootless.c index 364f0cbe4..437140f61 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Rootless.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Rootless.c @@ -249,7 +249,7 @@ Bool nxagentRootlessTreesMatch() { Window root_return; Window parent_return; - Window *children_return; + Window *children_return = NULL; unsigned int nChildrenReturn; WindowPtr pTestWin = screenInfo.screens[0]->root -> firstChild; Bool treesMatch = True; diff --git a/nx-X11/programs/Xserver/hw/nxagent/Window.c b/nx-X11/programs/Xserver/hw/nxagent/Window.c index 849317f25..1cad4ca03 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Window.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Window.c @@ -1454,7 +1454,7 @@ void nxagentConfigureWindow(WindowPtr pWin, unsigned int mask) { Window root_return; Window parent_return; - Window *children_return; + Window *children_return = NULL; unsigned int nchildren_return; Status result; @@ -1473,16 +1473,16 @@ void nxagentConfigureWindow(WindowPtr pWin, unsigned int mask) } } fprintf(stderr, "\n"); - - if (children_return) - { - XFree(children_return); - } } else { fprintf(stderr, "nxagentConfigureWindow: Failed QueryTree request.\n "); } + + if (children_return) + { + XFree(children_return); + } } #endif } -- cgit v1.2.3 From ad53af097ca5ff3c4687ab7c93f776d482760ae8 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Tue, 5 Dec 2017 21:25:12 +0100 Subject: Events.c: add ifdef around nxagentRemoteWindowsTree It is called only if DEBUG_TREE is defined. --- nx-X11/programs/Xserver/hw/nxagent/Events.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'nx-X11') diff --git a/nx-X11/programs/Xserver/hw/nxagent/Events.c b/nx-X11/programs/Xserver/hw/nxagent/Events.c index 4e08cd2c2..d1fdfd21e 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Events.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Events.c @@ -417,6 +417,8 @@ void nxagentRemoteWindowInfo(Window win, int indent, Bool newLine) } } + +#ifdef DEBUG_TREE /* * Walk remote windows tree. */ @@ -480,6 +482,7 @@ void nxagentRemoteWindowsTree(Window window, int level) XFree((char *) childList); } } +#endif /* * Print info about internal window. -- cgit v1.2.3