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

pull/1/head
nicm 2015-05-29 23:12:38 +00:00
parent a55e569af5
commit 74c755f2ab
1 changed files with 6 additions and 2 deletions

View File

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