1
0
mirror of https://github.com/tmux/tmux.git synced 2025-04-29 09:18:47 +00:00

Expand formats again inside #(), and free the temporaries.

This commit is contained in:
nicm 2015-05-29 23:12:38 +00:00
parent a55e569af5
commit 74c755f2ab

View File

@ -490,7 +490,7 @@ format_expand_time(struct format_tree *ft, const char *fmt, time_t t)
char * char *
format_expand(struct format_tree *ft, const char *fmt) format_expand(struct format_tree *ft, const char *fmt)
{ {
char *buf, *tmp; char *buf, *tmp, *cmd;
const char *ptr, *s; const char *ptr, *s;
size_t off, len, n, slen; size_t off, len, n, slen;
int ch, brackets; int ch, brackets;
@ -530,10 +530,14 @@ format_expand(struct format_tree *ft, const char *fmt)
tmp = xmalloc(n + 1); tmp = xmalloc(n + 1);
memcpy(tmp, fmt, n); memcpy(tmp, fmt, n);
tmp[n] = '\0'; tmp[n] = '\0';
cmd = format_expand(ft, tmp);
s = format_job_get(ft, tmp); s = format_job_get(ft, cmd);
slen = strlen(s); slen = strlen(s);
free(cmd);
free(tmp);
while (len - off < slen + 1) { while (len - off < slen + 1) {
buf = xreallocarray(buf, 2, len); buf = xreallocarray(buf, 2, len);
len *= 2; len *= 2;