git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] gitk: avoid a crash in Tk if the application is closed early

From
Pat Thoyts <patthoyts@users.sourceforge.net>
Date
Feb 28, 2009, 00:19 UTC
Message-ID
<87hc2fe7m1.fsf@users.sourceforge.net>
    This evades Tk bug [2645457] that can lead to a crash in gitk if
    the application is closed while the commits are still being read
    from the git subprocess. By calling update to flush all the
    outstanding geometry events we avoid the chance of trying to map a
    deleted window.
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
---
 gitk |   17 ++++++++++++-----
 1 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/gitk b/gitk
index 2b5265a..cd7ea2f 100755
--- a/gitk
+++ b/gitk
@@ -1795,6 +1795,7 @@ proc make_transient {window origin} {
 proc show_error {w top msg} {
     variable use_ttk
     set ttk [expr {$use_ttk ? "ttk" : ""}]
+    if {[wm state $top] eq "withdrawn"} { wm deiconify $top }
     message $w.m -text $msg -justify center -aspect 400
     pack $w.m -side top -fill x -padx 20 -pady 20
     ${ttk}::button $w.ok -default active -text [mc OK] -command "destroy $top"
@@ -10998,12 +10999,9 @@ proc init {args} {
     variable lserial 0
     variable isworktree [expr {[exec git rev-parse --is-inside-work-tree] == "true"}]
     setcoords
-    makewindow
-    # wait for the window to become visible
-    wm deiconify .
-    tkwait visibility .
+    wm withdraw .
     wm title . "[file tail $argv0]: [file tail [pwd]]"
-    readrefs
+    makewindow
 
     if {$cmdline_files ne {} || $revtreeargs ne {} || $revtreeargscmd ne {}} {
         # create a view for the files/dirs specified on the command line
@@ -11034,11 +11032,20 @@ proc init {args} {
         }
     }
 
+    # wait for the window to become visible
+    wm deiconify .
+    tkwait visibility .
+
     if {[tk windowingsystem] eq "win32"} {
         focus -force .
         bind . <Control-F2> {console show}
     }
 
+    # flush all geometry events to prevent possible crash if someone exits
+    # during the following reads.
+    update
+
+    readrefs
     getcommits {}
 }
 
-- 
1.6.0.2.1172.ga5ed0
Message 1 of 1 in “gitk: avoid a crash in Tk if the application is closed early”
  1. gitk: avoid a crash in Tk if the application is closed earlyPat Thoyts, Feb 28, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.