aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornicm <nicm>2017-04-20 09:39:07 +0000
committernicm <nicm>2017-04-20 09:39:07 +0000
commit0f25ad3ca32d329500ac830f3c13e60ead4cb3db (patch)
tree344da6fae9cf32caf143ea4064a733e05d111614
parent0b44ad99b51606a8cab662e04cf043a8c4a3ca92 (diff)
downloadrtmux-0f25ad3ca32d329500ac830f3c13e60ead4cb3db.tar.gz
rtmux-0f25ad3ca32d329500ac830f3c13e60ead4cb3db.tar.bz2
rtmux-0f25ad3ca32d329500ac830f3c13e60ead4cb3db.zip
There is no real need for window_printable_flags to allocate, make it
return a buffer from the stack.
-rw-r--r--format.c7
-rw-r--r--tmux.h2
-rw-r--r--window.c8
3 files changed, 6 insertions, 11 deletions
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 *