summaryrefslogtreecommitdiffstats
path: root/generic/tkCanvWind.c
diff options
context:
space:
mode:
authorfvogel <fvogelnew1@free.fr>2022-03-09 21:37:49 (GMT)
committerfvogel <fvogelnew1@free.fr>2022-03-09 21:37:49 (GMT)
commitae17007357f23615ecf2aba005495e7fff6a6957 (patch)
tree50f2bed57e6e8f5d67aa25d0e31f6998790c805c /generic/tkCanvWind.c
parent2df03c765cf8b22cf3ed085b2f5c5ddaf7b60ab3 (diff)
downloadtk-ae17007357f23615ecf2aba005495e7fff6a6957.zip
tk-ae17007357f23615ecf2aba005495e7fff6a6957.tar.gz
tk-ae17007357f23615ecf2aba005495e7fff6a6957.tar.bz2
Fix [5412c64a79]: Segmentation fault on closing error report window. The problem is a canvas embedded window gets destroyed through a binding to <Configure>. Test canvWind-2.1 now passes.
Diffstat (limited to 'generic/tkCanvWind.c')
-rw-r--r--generic/tkCanvWind.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/generic/tkCanvWind.c b/generic/tkCanvWind.c
index 4047b0f..4ca3f9b 100644
--- a/generic/tkCanvWind.c
+++ b/generic/tkCanvWind.c
@@ -619,6 +619,16 @@ DisplayWinItem(
|| (width != Tk_Width(winItemPtr->tkwin))
|| (height != Tk_Height(winItemPtr->tkwin))) {
Tk_MoveResizeWindow(winItemPtr->tkwin, x, y, width, height);
+
+ /*
+ * Tk_MoveResizeWindow runs a Configure event which in turn may run
+ * the event loop and do anything, including destruction of the
+ * canvas window. Catch this case or we would crash in Tk_MapWindow.
+ */
+
+ if (!winItemPtr->tkwin) {
+ return;
+ }
}
Tk_MapWindow(winItemPtr->tkwin);
} else {