From: Erik Faye-Lund Date: Fri, 08 Jun 2012 12:57:42 GMT Subject: Re: [PATCHv6 1/4] Read (but not write) from $XDG_CONFIG_HOME/git/config file Message-ID: In-Reply-To: <20120608145423.Horde.qT2BG3wdC4BP0fX-GHdFAeA@webmail.minatec.grenoble-inp.fr> On Fri, Jun 8, 2012 at 2:54 PM, wrote: > > Erik Faye-Lund 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 :)