aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThiago de Arruda <tpadilha84@gmail.com>2015-08-13 07:57:20 -0300
committerThiago de Arruda <tpadilha84@gmail.com>2015-08-13 08:52:17 -0300
commita816c726bbae4361a30c95b1226aaaa1dc76fd24 (patch)
tree1f9d2217aed89ddc0b8c9351fab936c493eaa75b
parent6b3cd381dcd01268479dc56103498a029133644d (diff)
downloadrneovim-a816c726bbae4361a30c95b1226aaaa1dc76fd24.tar.gz
rneovim-a816c726bbae4361a30c95b1226aaaa1dc76fd24.tar.bz2
rneovim-a816c726bbae4361a30c95b1226aaaa1dc76fd24.zip
pty_process: Make termios structure a static variable
The structure has a constant initializer and is only used for reading.
-rw-r--r--src/nvim/event/pty_process.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/nvim/event/pty_process.c b/src/nvim/event/pty_process.c
index 5a42695ae4..8eef72f12f 100644
--- a/src/nvim/event/pty_process.c
+++ b/src/nvim/event/pty_process.c
@@ -36,12 +36,15 @@
bool pty_process_spawn(PtyProcess *ptyproc)
FUNC_ATTR_NONNULL_ALL
{
+ static struct termios termios;
+ if (!termios.c_cflag) {
+ init_termios(&termios);
+ }
+
Process *proc = (Process *)ptyproc;
assert(!proc->err);
uv_signal_start(&proc->loop->children_watcher, chld_handler, SIGCHLD);
ptyproc->winsize = (struct winsize){ptyproc->height, ptyproc->width, 0, 0};
- struct termios termios;
- init_termios(&termios);
uv_disable_stdio_inheritance();
int master;
int pid = forkpty(&master, NULL, &termios, &ptyproc->winsize);
@@ -136,7 +139,6 @@ static void init_child(PtyProcess *ptyproc) FUNC_ATTR_NONNULL_ALL
static void init_termios(struct termios *termios) FUNC_ATTR_NONNULL_ALL
{
- memset(termios, 0, sizeof(struct termios));
// Taken from pangoterm
termios->c_iflag = ICRNL|IXON;
termios->c_oflag = OPOST|ONLCR;