updated for version 7.3.268
Problem: Vim freezes when executing an external command with zsh.
Solution: Use O_NOCTTY both in the master and slave. (Bjorn Winckler)
diff --git a/src/os_unix.c b/src/os_unix.c
index a3c4fd6..391af9c 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -3889,11 +3889,21 @@
if (p_guipty && !(options & (SHELL_READ|SHELL_WRITE)))
{
pty_master_fd = OpenPTY(&tty_name); /* open pty */
- if (pty_master_fd >= 0 && ((pty_slave_fd =
- open(tty_name, O_RDWR | O_EXTRA, 0)) < 0))
+ if (pty_master_fd >= 0)
{
- close(pty_master_fd);
- pty_master_fd = -1;
+ /* Leaving out O_NOCTTY may lead to waitpid() always returning
+ * 0 on Mac OS X 10.7 thereby causing freezes. Let's assume
+ * adding O_NOCTTY always works when defined. */
+#ifdef O_NOCTTY
+ pty_slave_fd = open(tty_name, O_RDWR | O_NOCTTY | O_EXTRA, 0);
+#else
+ pty_slave_fd = open(tty_name, O_RDWR | O_EXTRA, 0);
+#endif
+ if (pty_slave_fd < 0)
+ {
+ close(pty_master_fd);
+ pty_master_fd = -1;
+ }
}
}
/*
diff --git a/src/version.c b/src/version.c
index 6bddff0..8adefc0 100644
--- a/src/version.c
+++ b/src/version.c
@@ -710,6 +710,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 268,
+/**/
267,
/**/
266,