<div dir="ltr">On Sat, Apr 25, 2015 at 9:56 PM, Rémi Denis-Courmont <span dir="ltr"><<a href="mailto:remi@remlab.net" target="_blank">remi@remlab.net</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Le samedi 25 avril 2015, 09:33:17 David Fuhrmann a écrit :<br>
> Hello,<br>
><br>
> > Am 25.04.2015 um 02:09 schrieb Arjun Sreedharan <<a href="mailto:arjun024@gmail.com">arjun024@gmail.com</a>>:<br>
> ><br>
> > When asprintf() fails, @path is undefined.<br>
> ><br>
> > Signed-off-by: Arjun Sreedharan <<a href="mailto:arjun024@gmail.com">arjun024@gmail.com</a>><br>
> > ---<br>
> > src/darwin/dirs.c | 5 +++--<br>
> > 1 file changed, 3 insertions(+), 2 deletions(-)<br>
> ><br>
> > diff --git a/src/darwin/dirs.c b/src/darwin/dirs.c<br>
> > index 9c34cc5..7b6cedf 100644<br>
> > --- a/src/darwin/dirs.c<br>
> > +++ b/src/darwin/dirs.c<br>
> > @@ -82,9 +82,10 @@ char *config_GetLibDir (void)<br>
> ><br>
> >     if (dladdr(system_Init, &info)) {<br>
> ><br>
> >         char *incompletepath = strdup(dirname( (char *)info.dli_fname ));<br>
> >         char *path = NULL;<br>
> ><br>
> > -        asprintf(&path, "%s/"PACKAGE, incompletepath);<br>
> > +        if(asprintf(&path, "%s/"PACKAGE, incompletepath) == -1)<br>
> > +            path = NULL;<br>
><br>
> This is not needed. path is already NULL on error.<br>
<br>
Does Darwin implement the FreeBSD semantics? FreeBSD sets the pointer to NULL<br>
on error, but GNU/Linux does _not_. The function is not in any standard.<br></blockquote><div><br></div>Yosemite man pages do say it's set to NULL, not sure about older OSXes.<div><br></div><div>----------</div><div>The asprintf() and vasprintf() functions set *ret to be a pointer to a buffer sufficiently large to  hold the formatted string. This pointer should be passed to free(3) to release the allocated storage when it is no longer needed. If sufficient space cannot be allocated, asprintf() and vasprintf() will return -1 and set ret to be a NULL pointer.</div><div>----------<br><div><br></div></div><div>Tim</div></div></div></div>