diff options
author | nicm <nicm> | 2015-04-26 20:25:20 +0000 |
---|---|---|
committer | nicm <nicm> | 2015-04-26 20:25:20 +0000 |
commit | 5bd5c9c84e4bde3461a50f15e387c5e9fb78d7cb (patch) | |
tree | 5e2a2debfe649d2236a058ac96f907aa782e76fc | |
parent | 05e7fbd60fcd1f5c82049dc2f416e7dd42577cfd (diff) | |
download | rtmux-5bd5c9c84e4bde3461a50f15e387c5e9fb78d7cb.tar.gz rtmux-5bd5c9c84e4bde3461a50f15e387c5e9fb78d7cb.tar.bz2 rtmux-5bd5c9c84e4bde3461a50f15e387c5e9fb78d7cb.zip |
Remove panes from layout if spawning them fails, reported by Anthony J
Bentley.
-rw-r--r-- | cmd-split-window.c | 6 |
1 files 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) |