Erik Faye-Lund <kusmabite@xxxxxxxxx> a écrit :
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));
}
No, strbuf_release(&sb) frees 'sb.buf', causing 'path' to point to
unallocated memory. You can fix that by doing something along these
lines on top:
va_end(args);
- path = sb.buf;
+ path = xstrdup(cleanup_path(path));
strbuf_release(&sb);
- return xstrdup(cleanup_path(path));
+ return path;
}
You are right, but I think you rather mean this, no?
va_end(args);
- path = sb.buf;
+ path = xstrdup(cleanup_path(sb.buf));
strbuf_release(&sb);
- return xstrdup(cleanup_path(path));
+ return path;
}
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html