diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2023-12-03 15:21:32 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2023-12-03 15:21:32 (GMT) |
commit | 0b211c22418acb8c209a71580ce2b262a322bd9b (patch) | |
tree | 0acf8fa8963e9c731a213f5f3d050d5f8c014fc7 /generic/tkWindow.c | |
parent | a7f42afa4caeab5a05a5eab3b22db3d5c99ebc52 (diff) | |
download | tk-0b211c22418acb8c209a71580ce2b262a322bd9b.zip tk-0b211c22418acb8c209a71580ce2b262a322bd9b.tar.gz tk-0b211c22418acb8c209a71580ce2b262a322bd9b.tar.bz2 |
Fix [40af63fa24]: Aqua: passing None to XMapWindow() should be fatal
Diffstat (limited to 'generic/tkWindow.c')
-rw-r--r-- | generic/tkWindow.c | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/generic/tkWindow.c b/generic/tkWindow.c index 9ab59a3..2058501 100644 --- a/generic/tkWindow.c +++ b/generic/tkWindow.c @@ -1740,16 +1740,18 @@ Tk_MapWindow( TkWmMapWindow(winPtr); return; } - winPtr->flags |= TK_MAPPED; - XMapWindow(winPtr->display, winPtr->window); - event.type = MapNotify; - event.xmap.serial = LastKnownRequestProcessed(winPtr->display); - event.xmap.send_event = False; - event.xmap.display = winPtr->display; - event.xmap.event = winPtr->window; - event.xmap.window = winPtr->window; - event.xmap.override_redirect = winPtr->atts.override_redirect; - Tk_HandleEvent(&event); + if ((winPtr->window != None) + && (XMapWindow(winPtr->display, winPtr->window) == Success)) { + winPtr->flags |= TK_MAPPED; + event.type = MapNotify; + event.xmap.serial = LastKnownRequestProcessed(winPtr->display); + event.xmap.send_event = False; + event.xmap.display = winPtr->display; + event.xmap.event = winPtr->window; + event.xmap.window = winPtr->window; + event.xmap.override_redirect = winPtr->atts.override_redirect; + Tk_HandleEvent(&event); + } } /* @@ -1900,8 +1902,9 @@ Tk_UnmapWindow( return; } winPtr->flags &= ~TK_MAPPED; - XUnmapWindow(winPtr->display, winPtr->window); - if (!(winPtr->flags & TK_TOP_HIERARCHY)) { + if ((winPtr->window != None) + && (XUnmapWindow(winPtr->display, winPtr->window) == Success) + && !(winPtr->flags & TK_TOP_HIERARCHY)) { XEvent event; event.type = UnmapNotify; |