Do not double free window if pane fails to start.

This commit is contained in:
nicm 2019-06-30 19:21:53 +00:00
parent 4ff7bc3eb3
commit cf30e0f935
3 changed files with 2 additions and 5 deletions

View File

@ -172,10 +172,8 @@ spawn_window(struct spawn_context *sc, char **cause)
/* Spawn the pane. */ /* Spawn the pane. */
wp = spawn_pane(sc, cause); wp = spawn_pane(sc, cause);
if (wp == NULL) { if (wp == NULL) {
if (~sc->flags & SPAWN_RESPAWN) { if (~sc->flags & SPAWN_RESPAWN)
window_destroy(w);
winlink_remove(&s->windows, sc->wl); winlink_remove(&s->windows, sc->wl);
}
return (NULL); return (NULL);
} }

1
tmux.h
View File

@ -2362,7 +2362,6 @@ struct window *window_find_by_id_str(const char *);
struct window *window_find_by_id(u_int); struct window *window_find_by_id(u_int);
void window_update_activity(struct window *); void window_update_activity(struct window *);
struct window *window_create(u_int, u_int); struct window *window_create(u_int, u_int);
void window_destroy(struct window *);
void window_pane_set_event(struct window_pane *); void window_pane_set_event(struct window_pane *);
struct window_pane *window_get_active_at(struct window *, u_int, u_int); struct window_pane *window_get_active_at(struct window *, u_int, u_int);
struct window_pane *window_find_string(struct window *, const char *); struct window_pane *window_find_string(struct window *, const char *);

View File

@ -338,7 +338,7 @@ window_create(u_int sx, u_int sy)
return (w); return (w);
} }
void static void
window_destroy(struct window *w) window_destroy(struct window *w)
{ {
log_debug("window @%u destroyed (%d references)", w->id, w->references); log_debug("window @%u destroyed (%d references)", w->id, w->references);