From: Michael Haggerty Date: Thu, 25 Feb 2016 13:16:00 GMT Subject: [PATCH v2 01/20] safe_create_leading_directories_const(): preserve errno Message-ID: <1ff7b215e37593e935d8db81ea43c3c864161f71.1456405698.git.mhagger@alum.mit.edu> In-Reply-To: Theoretically, free() is allowed to change errno. So preserve the errno from safe_create_leading_directories() across the call to free(). Signed-off-by: Michael Haggerty --- sha1_file.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sha1_file.c b/sha1_file.c index aab1872..568120e 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -164,10 +164,14 @@ enum scld_error safe_create_leading_directories(char *path) enum scld_error safe_create_leading_directories_const(const char *path) { + int save_errno; /* path points to cache entries, so xstrdup before messing with it */ char *buf = xstrdup(path); enum scld_error result = safe_create_leading_directories(buf); + + save_errno = errno; free(buf); + errno = save_errno; return result; } -- 2.7.0