diff options
| author | Noam Postavsky | 2019-04-08 17:57:22 -0400 |
|---|---|---|
| committer | Noam Postavsky | 2019-04-14 22:43:38 -0400 |
| commit | 9800df69cb7003bda1f2b98d6f11e89ba95afb9b (patch) | |
| tree | 8de5b8b10e6a0743b7f227bef6bf87ffdb98ed4a /src/process.c | |
| parent | fc0f469fb5b5eb28ca4d9948190be6cb1bd8156e (diff) | |
| download | emacs-9800df69cb7003bda1f2b98d6f11e89ba95afb9b.tar.gz emacs-9800df69cb7003bda1f2b98d6f11e89ba95afb9b.zip | |
Let debugger handle process spawn errors on w32 (Bug#33016)
Since child_setup() is called between block_input()...unblock_input(),
when an error is signaled the Lisp debugger is prevented from
starting. Therefore, let the callers signal the error instead (which
they already do for non-w32 platforms, just the error message needs an
update).
* src/callproc.c (child_setup) [WINDOWSNT]: Don't call
report_file_error here.
(call_process) [WINDOWNT]:
* src/process.c (create_process) [WINDOWSNT]: Call report_file_errno
here instead, after the unblock_input() call, same as for !WINDOWSNT.
* src/lisp.h (CHILD_SETUP_ERROR_DESC): New preprocessor define. Flip
the containing ifndef DOS_NT branches so that it's ifdef DOS_NT.
* src/eval.c (when_entered_debugger): Remove.
(syms_of_eval) <internal-when-entered-debugger>: Define it as a Lisp
integer variable instead.
(maybe_call_debugger): Update comment.
* test/src/process-tests.el (make-process-w32-debug-spawn-error):
* test/src/callproc-tests.el (call-process-w32-debug-spawn-error): New
tests.
Diffstat (limited to 'src/process.c')
| -rw-r--r-- | src/process.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/process.c b/src/process.c index 6770a5ed884..0c440371628 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -2233,7 +2233,7 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir) | |||
| 2233 | unblock_input (); | 2233 | unblock_input (); |
| 2234 | 2234 | ||
| 2235 | if (pid < 0) | 2235 | if (pid < 0) |
| 2236 | report_file_errno ("Doing vfork", Qnil, vfork_errno); | 2236 | report_file_errno (CHILD_SETUP_ERROR_DESC, Qnil, vfork_errno); |
| 2237 | else | 2237 | else |
| 2238 | { | 2238 | { |
| 2239 | /* vfork succeeded. */ | 2239 | /* vfork succeeded. */ |