From 5bd5c9c84e4bde3461a50f15e387c5e9fb78d7cb Mon Sep 17 00:00:00 2001 From: nicm Date: Sun, 26 Apr 2015 20:25:20 +0000 Subject: [PATCH] Remove panes from layout if spawning them fails, reported by Anthony J Bentley. --- cmd-split-window.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cmd-split-window.c b/cmd-split-window.c index 680b1560..4e85a0f3 100644 --- a/cmd-split-window.c +++ b/cmd-split-window.c @@ -147,6 +147,7 @@ cmd_split_window_exec(struct cmd *self, struct cmd_q *cmdq) goto error; } new_wp = window_add_pane(w, hlimit); + layout_assign_pane(lc, new_wp); path = NULL; if (cmdq->client != NULL && cmdq->client->session == NULL) @@ -159,7 +160,6 @@ cmd_split_window_exec(struct cmd *self, struct cmd_q *cmdq) if (window_pane_spawn(new_wp, argc, argv, path, shell, cwd, &env, s->tio, &cause) != 0) goto error; - layout_assign_pane(lc, new_wp); server_redraw_window(w); @@ -194,8 +194,10 @@ cmd_split_window_exec(struct cmd *self, struct cmd_q *cmdq) error: environ_free(&env); - if (new_wp != NULL) + if (new_wp != NULL) { + layout_close_pane(new_wp); window_remove_pane(w, new_wp); + } cmdq_error(cmdq, "create pane failed: %s", cause); free(cause); if (fd != -1)