diff options
| author | Philipp Stephani | 2019-01-02 22:04:56 +0100 |
|---|---|---|
| committer | Philipp Stephani | 2019-02-24 22:43:07 +0100 |
| commit | 72ec233f2a1b8a6a9574e61588d0467caf41755c (patch) | |
| tree | 725add4413feb9cb7789576294099096e63d3044 /src/eval.c | |
| parent | 5653b76d0bacf1edfc3d962c0bb991344cd80f6f (diff) | |
| download | emacs-72ec233f2a1b8a6a9574e61588d0467caf41755c.tar.gz emacs-72ec233f2a1b8a6a9574e61588d0467caf41755c.zip | |
Ignore pending_signals when checking for quits.
pending_signals is often set if no quit is pending. This results in
bugs in module code if the module returns but no quit is actually
pending.
As a better alternative, add a new process_input environment function
for Emacs 27. That function processes signals (like maybe_quit).
* configure.ac: Add module snippet for Emacs 27.
* src/module-env-27.h: New file.
* src/emacs-module.h.in: Add process_input function to environment
interface.
* src/emacs-module.c (module_should_quit): Use QUITP macro to check
whether the caller should quit.
(module_process_input): New function.
(initialize_environment): Use it.
* src/eval.c: Remove obsolete comment.
* test/data/emacs-module/mod-test.c (signal_wrong_type_argument)
(signal_errno): New helper functions.
(Fmod_test_sleep_until): New test module function.
* test/src/emacs-module-tests.el (mod-test-sleep-until): New unit
test.
* doc/lispref/internals.texi (Module Misc): Document process_input.
Diffstat (limited to 'src/eval.c')
| -rw-r--r-- | src/eval.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/src/eval.c b/src/eval.c index b094fc2e663..b6cdfc911d0 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -1575,10 +1575,7 @@ process_quit_flag (void) | |||
| 1575 | If quit-flag is set to `kill-emacs' the SIGINT handler has received | 1575 | If quit-flag is set to `kill-emacs' the SIGINT handler has received |
| 1576 | a request to exit Emacs when it is safe to do. | 1576 | a request to exit Emacs when it is safe to do. |
| 1577 | 1577 | ||
| 1578 | When not quitting, process any pending signals. | 1578 | When not quitting, process any pending signals. */ |
| 1579 | |||
| 1580 | If you change this function, also adapt module_should_quit in | ||
| 1581 | emacs-module.c. */ | ||
| 1582 | 1579 | ||
| 1583 | void | 1580 | void |
| 1584 | maybe_quit (void) | 1581 | maybe_quit (void) |