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:
parent
a55e569af5
commit
74c755f2ab
8
format.c
8
format.c
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user