From: Michael Haggerty Date: Fri, 6 Jan 2017 16:22:24 +0000 (+0100) Subject: safe_create_leading_directories_const(): preserve errno X-Git-Tag: v2.13.0-rc0~177^2~19 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/029443070a4e5b0290a2d09f3707bc486d84a961 safe_create_leading_directories_const(): preserve errno Some implementations of free() change errno (even thought they shouldn't): https://sourceware.org/bugzilla/show_bug.cgi?id=17924 So preserve the errno from safe_create_leading_directories() across the call to free(). Signed-off-by: Michael Haggerty Reviewed-by: Jeff King Signed-off-by: Junio C Hamano --- diff --git a/sha1_file.c b/sha1_file.c index 1173071859..10395e7e4b 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -166,10 +166,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; }