aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman <[email protected]>2002-03-14 09:13:28 +0000
committerRichard M. Stallman <[email protected]>2002-03-14 09:13:28 +0000
commite7161ad9ffbeece2a11b57b96da62264561cfcd4 (patch)
treed227572d8a3b9275491c7178e79a659e3a8bea06
parent7c3f9166ee1754619df09484a3d30dd0508b0370 (diff)
(x_real_positions): Handle failure in XQueryTree.
-rw-r--r--src/xfns.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/xfns.c b/src/xfns.c
index 8b7304025d..23d85d10e2 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -1176,13 +1176,19 @@ x_real_positions (f, xptr, yptr)
Window wm_window, rootw;
Window *tmp_children;
unsigned int tmp_nchildren;
+ int success;
- XQueryTree (FRAME_X_DISPLAY (f), win, &rootw,
- &wm_window, &tmp_children, &tmp_nchildren);
- XFree ((char *) tmp_children);
+ success = XQueryTree (FRAME_X_DISPLAY (f), win, &rootw,
+ &wm_window, &tmp_children, &tmp_nchildren);
had_errors = x_had_errors_p (FRAME_X_DISPLAY (f));
+ /* Don't free tmp_children if XQueryTree failed. */
+ if (! success)
+ break;
+
+ XFree ((char *) tmp_children);
+
if (wm_window == rootw || had_errors)
break;