Subject: Re: bug#4970: 23.1; Emacs Gtk running nuts

From: Eli Zaretskii <[email-masked]>
Date: Fri, 20 Nov 2009 13:14:30 +0200

> Date: Fri, 20 Nov 2009 11:37:01 +0100
> From: Jan =?UTF-8?Q?Dj=C3=A4rv?= <[email-masked]>
> Cc: [email-masked]
> 
> Dan Nicolaescu skrev:
> > Jan Djärv <[email-masked]> writes:
> > 
> >   > What happens is that reading from the terminal fails and Emacs tries
> >   > to remove that terminal, but in term.c:
> >   > 
> >   >   if (last_terminal)
> >   >       error ("Attempt to delete the sole terminal device with live frames");
> >   > 
> >   > 
> >   > which goes back to the command loop, tries to read agan, fails, and
> >   > tries to delete the terminal again, and so on.
> >   > 
> >   > If you remove this check, Emacs exits.  But I suppose it is there for
> >   > a reason, but I don't know what.  Anybody?
> > 
> > It's there so that if you do:
> > emacs -Q -nw
> > C-x 5 0
> > does not exit emacs.
> 
> Well, the check in term.c isn't preventing that.  It is the check in frame.c 
> delete_frame that does that:
> 
>    if (NILP (force) && !other_visible_frames (f))
>      error ("Attempt to delete the sole visible or iconified frame");

What about delete-terminal?

And btw, are there any live frames when the test in term.c is made, in
the recipe to reproduce the original bug?  If not, maybe it needs to
check for live frames explicitly.