Subject: bug#5819: 23.1.93; OSX: start-process sometimes returns an unready process

From: YAMAMOTO Mitsuharu <[email-masked]>
Date: Fri, 09 Apr 2010 09:48:29 +0900

>>>>> On Fri, 09 Apr 2010 00:10:09 +0200, Markus Triska <[email-masked]> said:

> YAMAMOTO Mitsuharu <[email-masked]> writes:
>> The following simpler one seems to work for me on 10.4 (but not on
>> 10.3, again).  Could you test if it also works for you, with
>> respect to this problem and #726 (23.0.60; OSX: Complete OS crash)?

> Your patch fixes both issues for me. Thank you very much!

Thanks for testing.

Maintainers, which branch should I install this patch to?  Bug#726 is
marked as important.

			     YAMAMOTO Mitsuharu
			[email-masked]

=== modified file 'src/s/darwin.h'
*** src/s/darwin.h	2010-03-30 04:55:59 +0000
--- src/s/darwin.h	2010-04-05 03:21:53 +0000
***************
*** 90,95 ****
--- 90,113 ----
   */
  
  #define HAVE_PTYS
+ /* Run only once.  We need a `for'-loop because the code uses
+    `continue'.  */
+ #define PTY_ITERATION	for (i = 0; i < 1; i++)
+ #define PTY_NAME_SPRINTF	/* none */
+ #define PTY_TTY_NAME_SPRINTF	/* none */
+ /* Note that openpty may fork via grantpt on Mac OS X 10.4/Darwin 8.
+    But we don't have to block SIGCHLD because it is blocked in the
+    implementation of grantpt.  */
+ #define PTY_OPEN						\
+   do								\
+     {								\
+       int slave;						\
+       if (openpty (&fd, &slave, pty_name, NULL, NULL) == -1)	\
+ 	fd = -1;						\
+       else							\
+ 	emacs_close (slave);					\
+     }								\
+   while (0)
  
  /**
   * PTYs only work correctly on Darwin 7 or higher.  So make the