diff --git a/control-notify.c b/control-notify.c index 151f959d..021f9884 100644 --- a/control-notify.c +++ b/control-notify.c @@ -224,6 +224,14 @@ control_notify_session_window_changed(struct session *s) { struct client *c; + /* + * A deferred session-window-changed notification can fire after the + * session has been destroyed (which sets curw to NULL) but is kept + * alive by the notification's reference. Skip the notification. + */ + if (s->curw == NULL) + return; + TAILQ_FOREACH(c, &clients, entry) { if (!CONTROL_SHOULD_NOTIFY_CLIENT(c)) continue;