1
0
mirror of https://github.com/openbsd/src.git synced 2026-06-18 07:13:36 +02:00

Only set saved_layout_cell if creating a new cell, avoids crash when

respawning pane. Reported by Mingjie Shen in GitHubb issue 5143.
This commit is contained in:
nicm
2026-06-01 19:56:26 +00:00
parent 88ff10c154
commit 344ed6f9e0
+18 -16
View File
@@ -1,4 +1,4 @@
/* $OpenBSD: spawn.c,v 1.37 2026/05/19 10:26:03 nicm Exp $ */
/* $OpenBSD: spawn.c,v 1.38 2026/06/01 19:56:26 nicm Exp $ */
/*
* Copyright (c) 2019 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -271,23 +271,25 @@ spawn_pane(struct spawn_context *sc, char **cause)
sc->wp0->ictx = NULL;
new_wp = sc->wp0;
new_wp->flags &= ~(PANE_STATUSREADY|PANE_STATUSDRAWN);
} else if (sc->lc == NULL) {
new_wp = window_add_pane(w, NULL, hlimit, sc->flags);
layout_init(w, new_wp);
} else {
new_wp = window_add_pane(w, sc->wp0, hlimit, sc->flags);
if (sc->flags & SPAWN_ZOOM)
layout_assign_pane(sc->lc, new_wp, 1);
else
layout_assign_pane(sc->lc, new_wp, 0);
}
if (sc->lc == NULL) {
new_wp = window_add_pane(w, NULL, hlimit, sc->flags);
layout_init(w, new_wp);
} else {
new_wp = window_add_pane(w, sc->wp0, hlimit, sc->flags);
if (sc->flags & SPAWN_ZOOM)
layout_assign_pane(sc->lc, new_wp, 1);
else
layout_assign_pane(sc->lc, new_wp, 0);
}
/*
* If window currently zoomed, window_set_active_pane calls
* window_unzoom which it copies back the saved_layout_cell.
*/
if (w->flags & WINDOW_ZOOMED)
new_wp->saved_layout_cell = new_wp->layout_cell;
/*
* If window currently zoomed, window_set_active_pane calls
* window_unzoom which it copies back the saved_layout_cell.
*/
if (w->flags & WINDOW_ZOOMED)
new_wp->saved_layout_cell = new_wp->layout_cell;
}
/*
* Now we have a pane with nothing running in it ready for the new