Mercurial > emacs
changeset 101121:7981035d8c66
(cmd_error_internal): Exit when errors occur before
frame creation and not in daemon mode. (Bug#1836)
author | Jason Rumney <jasonr@gnu.org> |
---|---|
date | Sun, 11 Jan 2009 13:24:26 +0000 |
parents | c7a080d2d889 |
children | 0e3220acb9ee |
files | src/keyboard.c |
diffstat | 1 files changed, 11 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/keyboard.c Sun Jan 11 04:05:32 2009 +0000 +++ b/src/keyboard.c Sun Jan 11 13:24:26 2009 +0000 @@ -1265,18 +1265,17 @@ /* 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,