summaryrefslogtreecommitdiff
path: root/src/process.h
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2016-08-11 11:24:54 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2016-08-11 11:26:34 -0700
commit2dd8044bfb61efc368c590b1285fdbca54606152 (patch)
treee080593b4e2183d66aeaaa6a0c406577f32a129a /src/process.h
parent2e0a2b376f51dd515ffeb6449181cc37fe912f5e (diff)
downloademacs-2dd8044bfb61efc368c590b1285fdbca54606152.tar.gz
Fix process leak with make-network-process
This problem was introduced by the recent async changes (Bug#23808). * src/process.c (Fmake_process): Move USE_SAFE_ALLOCA later, so that it follows the start_process_unwind unwind-protect. Set pid to -1 while the process is being created. (start_process_unwind): Omit unnecessary emacs_abort test. (connect_network_socket): Simplify use of counts. Unwind bind_polling_period a bit earlier, so that a remove_process unwind-protect can be added when needed; this is the heart of the fix. Undo the unwind-protect just before returning.
Diffstat (limited to 'src/process.h')
-rw-r--r--src/process.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/process.h b/src/process.h
index 6c227bc2266..9926050b9c3 100644
--- a/src/process.h
+++ b/src/process.h
@@ -118,10 +118,11 @@ struct Lisp_Process
/* After this point, there are no Lisp_Objects any more. */
/* alloc.c assumes that `pid' is the first such non-Lisp slot. */
- /* Number of this process.
- allocate_process assumes this is the first non-Lisp_Object field.
- A value 0 is used for pseudo-processes such as network or serial
- connections. */
+ /* Process ID. A positive value is a child process ID.
+ Zero is for pseudo-processes such as network or serial connections,
+ or for processes that have not been fully created yet.
+ -1 is for a process that was not created successfully.
+ -2 is for a pty with no process, e.g., for GDB. */
pid_t pid;
/* Descriptor by which we read from this process. */
int infd;