Re: [PATCHv6 1/4] Read (but not write) from $XDG_CONFIG_HOME/git/config file

4 messages, 3 authors, 2016-06-15 · open the first message on its own page

Re: [PATCHv6 1/4] Read (but not write) from $XDG_CONFIG_HOME/git/config file

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:54:02

Erik Faye-Lund [off-list ref] writes:
The awkward thing about doing this, is that the memory allocated by
the strbuf cannot be reclaimed if you go with this. A pointer that has
been adjusted (like cleanup_path can do) cannot be successfully fed to
free.
Yeah, I wouldn't recommend doing that.  Either

	path = strbuf_detach(&sb, NULL);
	retval = xstrdup(cleanup_path(path));
        free(path);
        return retval;

or

	path = xstrdup(cleanup_path(sb.buf));
        strbuf_release(&sb);
        return path;
	
would be more sensible.

Re: [PATCHv6 1/4] Read (but not write) from $XDG_CONFIG_HOME/git/config file

From: <hidden>
Date: 2016-06-15 22:54:02

Junio C Hamano [off-list ref] a écrit :
Erik Faye-Lund [off-list ref] writes:
quoted
The awkward thing about doing this, is that the memory allocated by
the strbuf cannot be reclaimed if you go with this. A pointer that has
been adjusted (like cleanup_path can do) cannot be successfully fed to
free.
Yeah, I wouldn't recommend doing that.  Either

	path = strbuf_detach(&sb, NULL);
	retval = xstrdup(cleanup_path(path));
        free(path);
        return retval;

or

	path = xstrdup(cleanup_path(sb.buf));
        strbuf_release(&sb);
        return path;

would be more sensible.
Erik, what do you prefer ? You can have the final answer.

Re: [PATCHv6 1/4] Read (but not write) from $XDG_CONFIG_HOME/git/config file

From: <hidden>
Date: 2016-06-15 22:54:02

nguyenhu@minatec.inpg.fr a écrit :
Junio C Hamano [off-list ref] a écrit :
quoted
Erik Faye-Lund [off-list ref] writes:
quoted
The awkward thing about doing this, is that the memory allocated by
the strbuf cannot be reclaimed if you go with this. A pointer that has
been adjusted (like cleanup_path can do) cannot be successfully fed to
free.
Yeah, I wouldn't recommend doing that.  Either

	path = strbuf_detach(&sb, NULL);
	retval = xstrdup(cleanup_path(path));
       free(path);
       return retval;

or

	path = xstrdup(cleanup_path(sb.buf));
       strbuf_release(&sb);
       return path;

would be more sensible.
In our next patch, mkpathdup() function will be

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 = xstrdup(cleanup_path(sb.buf));

	strbuf_release(&sb);
	return path;
}

which looks like our previous proposal with xstrdup()
and cleanup_path() functions at the right place.

Re: [PATCHv6 1/4] Read (but not write) from $XDG_CONFIG_HOME/git/config file

From: Erik Faye-Lund <hidden>
Date: 2016-06-15 22:54:02

On Mon, Jun 11, 2012 at 6:53 PM,  [off-list ref] wrote:
Junio C Hamano [off-list ref] a écrit :
quoted
Erik Faye-Lund [off-list ref] writes:
quoted
The awkward thing about doing this, is that the memory allocated by
the strbuf cannot be reclaimed if you go with this. A pointer that has
been adjusted (like cleanup_path can do) cannot be successfully fed to
free.

Yeah, I wouldn't recommend doing that.  Either

       path = strbuf_detach(&sb, NULL);
       retval = xstrdup(cleanup_path(path));
       free(path);
       return retval;

or

       path = xstrdup(cleanup_path(sb.buf));
       strbuf_release(&sb);
       return path;

would be more sensible.

Erik, what do you prefer ? You can have the final answer.
I think the latter is the neater one, but I don't really care too much
either way :)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help