Re: [PATCHv6 1/4] Read (but not write) from $XDG_CONFIG_HOME/git/config file
Erik Faye-Lund <kusmabite@gmail.com> a écrit :
Show 28 quoted lines
>> 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;
}