mirror of
https://github.com/tmux/tmux.git
synced 2025-09-01 20:57:00 +00:00
Fix up window reference counting and don't crash if the rename timer
fires while the window is dead but still referenced. Fixes problem reported by Michael Scholz.
This commit is contained in:
19
window.c
19
window.c
@ -182,13 +182,8 @@ winlink_remove(struct winlinks *wwl, struct winlink *wl)
|
||||
free(wl->status_text);
|
||||
free(wl);
|
||||
|
||||
if (w != NULL) {
|
||||
if (w->references == 0)
|
||||
fatal("bad reference count");
|
||||
w->references--;
|
||||
if (w->references == 0)
|
||||
window_destroy(w);
|
||||
}
|
||||
if (w != NULL)
|
||||
window_remove_ref(w);
|
||||
}
|
||||
|
||||
struct winlink *
|
||||
@ -362,6 +357,16 @@ window_destroy(struct window *w)
|
||||
free(w);
|
||||
}
|
||||
|
||||
void
|
||||
window_remove_ref(struct window *w)
|
||||
{
|
||||
if (w->references == 0)
|
||||
fatal("bad reference count");
|
||||
w->references--;
|
||||
if (w->references == 0)
|
||||
window_destroy(w);
|
||||
}
|
||||
|
||||
void
|
||||
window_set_name(struct window *w, const char *new_name)
|
||||
{
|
||||
|
Reference in New Issue
Block a user