nguyenhu@minatec.inpg.fr writes:
What about this ?
What about that ;-)?
char *mkpathdup(const char *fmt, ...)
{
char *path;
struct strbuf sb = STRBUF_INIT;
va_list args;
va_start(args, fmt);
strbuf_vaddf(&sb, fmt, args);
va_end(args);
path = sb.buf;
strbuf_release(&sb);
return xstrdup(cleanup_path(path));
}
Modulo
path = strbuf_detach(&sb, NULL);
that is more or less what I meant.
Junio C Hamano [off-list ref] a écrit :
quoted
char *mkpathdup(const char *fmt, ...)
{
char *path;
struct strbuf sb = STRBUF_INIT;
va_list args;
va_start(args, fmt);
strbuf_vaddf(&sb, fmt, args);
va_end(args);
path = sb.buf;
strbuf_release(&sb);
return xstrdup(cleanup_path(path));
}
Modulo
path = strbuf_detach(&sb, NULL);
that is more or less what I meant.
So now the mkpathdup() function looks like:
char *mkpathdup(const char *fmt, ...)
{
char *path;
struct strbuf sb = STRBUF_INIT;
va_list args;
va_start(args, fmt);
strbuf_vaddf(&sb, fmt, args);
va_end(args);
path = strbuf_detach(&sb, NULL);
strbuf_release(&sb);
return path;
}
This new variation of mkpathdup() function both fix the bug addressed
by commit 05bab3ea and avoid the use of bounded buffer.