On Fri, Jun 8, 2012 at 2:54 PM, <nguyenhu@xxxxxxxxxxxxxxx> wrote: > > 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; > } > Yes, sorry for the fat fingers :) -- 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