Re: [PATCH v2 git-gui] git-gui--askpass: Do not hang on exit
- From
Pat Thoyts <patthoyts@users.sourceforge.net>
- Date
- Aug 15, 2010, 23:53 UTC
- Message-ID
- <87mxsnh1qp.fsf@fox.patthoyts.tk>
- In-Reply-To
- <20100704212439.GA1765@burratino>
Jonathan Nieder <jrnieder@gmail.com> writes:
Show 45 quoted lines
>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@mit.edu>
>Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
>---
> 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