diff --git a/ChangeLog b/ChangeLog index 943552ee..ba6ddaed 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2012-09-09 Paul Smith + * function.c (func_realpath): BSD realpath(3) doesn't fail if the + file does not exist: use stat. Fixes Savannah bug #35919. + * file.c (expand_deps): Duplicate the current variable buffer, not the old pointer. Fixes Savannah bug #36925. diff --git a/function.c b/function.c index 67405ccf..325d9304 100644 --- a/function.c +++ b/function.c @@ -2066,9 +2066,7 @@ func_realpath (char *o, char **argv, const char *funcname UNUSED) const char *path = 0; int doneany = 0; unsigned int len = 0; -#ifndef HAVE_REALPATH struct stat st; -#endif PATH_VAR (in); PATH_VAR (out); @@ -2083,9 +2081,9 @@ func_realpath (char *o, char **argv, const char *funcname UNUSED) #ifdef HAVE_REALPATH realpath (in, out) #else - abspath (in, out) && stat (out, &st) == 0 + abspath (in, out) #endif - ) + && stat (out, &st) == 0) { o = variable_buffer_output (o, out, strlen (out)); o = variable_buffer_output (o, " ", 1);