diff options
author | Richard M. Stallman <[email protected]> | 2002-03-14 09:13:28 +0000 |
---|---|---|
committer | Richard M. Stallman <[email protected]> | 2002-03-14 09:13:28 +0000 |
commit | e7161ad9ffbeece2a11b57b96da62264561cfcd4 (patch) | |
tree | d227572d8a3b9275491c7178e79a659e3a8bea06 | |
parent | 7c3f9166ee1754619df09484a3d30dd0508b0370 (diff) |
(x_real_positions): Handle failure in XQueryTree.
-rw-r--r-- | src/xfns.c | 12 |
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; |