(cmd_error_internal): Exit when errors occur before

frame creation and not in daemon mode.  (Bug#1836)
This commit is contained in:
Jason Rumney 2009-01-11 13:26:39 +00:00
parent 6fcec85ef3
commit 0dad7c6f11
2 changed files with 16 additions and 12 deletions

View file

@ -1,3 +1,8 @@
2009-01-11 Jason Rumney <jasonr@gnu.org>
* keyboard.c (cmd_error_internal): Exit when errors occur before
frame creation and not in daemon mode. (Bug#1836)
2009-01-10 Chong Yidong <cyd@stupidchicken.com>
* xdisp.c (pos_visible_p): When iterator stops on the last glyph

View file

@ -1265,18 +1265,17 @@ cmd_error_internal (data, context)
/* If the window system or terminal frame hasn't been initialized
yet, or we're not interactive, write the message to stderr and exit. */
else if (!sf->glyphs_initialized_p
/* We used to check if "This is the case of the frame dumped with
Emacs, when we're running under a window system" with
|| (!NILP (Vwindow_system) && !inhibit_window_system
&& FRAME_TERMCAP_P (sf))
then the multi-tty code generalized this check to
|| FRAME_INITIAL_P (sf)
but this leads to undesirable behavior in daemon mode where
we don't want to exit just because we got an error without
having a frame (bug#1310).
So I just removed the check, and rely instead on the `message_*'
functions properly using FRAME_INITIAL_P. In the worst case
this should just make Emacs not exit when it should. */
/* The initial frame is a special non-displaying frame. It
will be current in daemon mode when there are no frames
to display, and in non-daemon mode before the real frame
has finished initializing. If an error is thrown in the
latter case while creating the frame, then the frame
will never be displayed, so the safest thing to do is
write to stderr and quit. In daemon mode, there are
many other potential errors that do not prevent frames
from being created, so continuing as normal is better in
that case. */
|| (!IS_DAEMON && FRAME_INITIAL_P (sf))
|| noninteractive)
{
print_error_message (data, Qexternal_debugging_output,