diff --git a/format.c b/format.c index 5c85f1ff..151c3c48 100644 --- a/format.c +++ b/format.c @@ -1237,17 +1237,14 @@ format_defaults_winlink(struct format_tree *ft, struct session *s, struct winlink *wl) { struct window *w = wl->window; - char *flags; if (ft->w == NULL) ft->w = wl->window; - flags = window_printable_flags(s, wl); - format_defaults_window(ft, w); format_add(ft, "window_index", "%d", wl->idx); - format_add(ft, "window_flags", "%s", flags); + format_add(ft, "window_flags", "%s", window_printable_flags(s, wl)); format_add(ft, "window_active", "%d", wl == s->curw); format_add(ft, "window_bell_flag", "%d", @@ -1259,8 +1256,6 @@ format_defaults_winlink(struct format_tree *ft, struct session *s, format_add(ft, "window_last_flag", "%d", !!(wl == TAILQ_FIRST(&s->lastw))); format_add(ft, "window_linked", "%d", session_is_linked(s, wl->window)); - - free(flags); } /* Set default format keys for a window pane. */ diff --git a/tmux.h b/tmux.h index adad2edc..b8a40df0 100644 --- a/tmux.h +++ b/tmux.h @@ -2120,7 +2120,7 @@ int window_pane_outside(struct window_pane *); int window_pane_visible(struct window_pane *); char *window_pane_search(struct window_pane *, const char *, u_int *); -char *window_printable_flags(struct session *, struct winlink *); +const char *window_printable_flags(struct session *, struct winlink *); struct window_pane *window_pane_find_up(struct window_pane *); struct window_pane *window_pane_find_down(struct window_pane *); struct window_pane *window_pane_find_left(struct window_pane *); diff --git a/window.c b/window.c index 0dea2b4a..b0be6220 100644 --- a/window.c +++ b/window.c @@ -710,11 +710,11 @@ window_destroy_panes(struct window *w) } /* Retuns the printable flags on a window, empty string if no flags set. */ -char * +const char * window_printable_flags(struct session *s, struct winlink *wl) { - char flags[32]; - int pos; + static char flags[32]; + int pos; pos = 0; if (wl->flags & WINLINK_ACTIVITY) @@ -732,7 +732,7 @@ window_printable_flags(struct session *s, struct winlink *wl) if (wl->window->flags & WINDOW_ZOOMED) flags[pos++] = 'Z'; flags[pos] = '\0'; - return (xstrdup(flags)); + return (flags); } struct window_pane *