Jeff Mincy <jeff(a)delphioutpost.com> writes:
I just spent, oh maybe, 5 minutes looking at the source. I
don't
see how it could do anything other than loop.
It looks like x_IO_error_handler is called, sets
DEVICE_X_BEING_DELETED (as you stated), then throws to top level,
which is inside of an infinite for loop.
Yes, but that infinite for loop calls the command loop, doesn't it?
And the command loop should call the event loop, which should execute
the enqueued magic event, which should cause the last available device
getting deleted, which should cause XEmacs to exit gracefully.
Can you see why the magic event doesn't fire or, if it does, why
doesn't XEmacs exit?
Does it ever exit gracefully?
Deleting the last device should call graceful exit; for example, this
exits:
xemacs -nw -eval "(delete-device (selected-device) t)"