Jonathan Nieder <jrnieder@xxxxxxxxx> writes: >Anders Kaseorg wrote: > >> When git-gui--askpass is manually copied from the source into >> /usr/lib/git-core, though, it doesn’t particularly work; its window >> just freezes after the password is typed. > >The problem seems to be the > > bind . <Destroy> {exit $::rc} > >line; apparently each exit causes the window to be destroyed again, >resulting in git gui hanging. > >Reported-by: Anders Kaseorg <andersk@xxxxxxx> >Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx> >--- > I wrote: > > > @@ -52,7 +52,9 @@ proc finish {} { > > > > set ::rc 0 > > puts $::answer > > + bind . <Destroy> {} > > destroy . > > but that does nothing to help the case when the destroy event > comes from the window manager. Here’s a saner patch (sorry for > the noise). > >diff --git a/git-gui--askpass b/git-gui--askpass >index 12e117e..20b8799 100755 >--- a/git-gui--askpass >+++ b/git-gui--askpass >@@ -39,7 +39,10 @@ pack .b -side bottom -fill x -padx 10 -pady 10 > bind . <Visibility> {focus -force .e} > bind . <Key-Return> finish > bind . <Key-Escape> {destroy .} >-bind . <Destroy> {exit $rc} >+bind . <Destroy> { >+ bind . <Destroy> {} >+ exit $::rc >+} > > proc finish {} { > if {$::yesno} { I'm not so keen to take this patch for git-gui. Exiting from bindings isn't such great Tk style and I'd rather we used a vwait to explicitly run the event loop and exit after terminating that. The following patch does this. 'git-gui: change the termination checks to avoid potential hang' I'm not certain of the conditions that produced the error this is supposed to fix. I have not reproduced the hang so far on a linux system using Tk 8.5. It would be good to get confirmation that my proposed patch actually solves the issue reported. -- Pat Thoyts http://www.patthoyts.tk/ PGP fingerprint 2C 6E 98 07 2C 59 C8 97 10 CE 11 E6 04 E0 B9 DD -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html