diff options
author | Junio C Hamano <gitster@pobox.com> | 2019-12-17 00:08:31 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-12-17 00:08:31 +0300 |
commit | 4755a34c47c6d624d77ce90c7ea5247b43829cc0 (patch) | |
tree | 3ad415411bd7dfed02ce8ab0b645e0c043c08a19 /compat | |
parent | 37c2619d91aa63d4c7c07b6f8de5ff2e1c2472b2 (diff) | |
parent | 0109d676f9d4d6f9d149d5194bdb200c6de3fcca (diff) |
Merge branch 'dd/time-reentrancy'
Avoid gmtime() and localtime() and prefer their reentrant
counterparts.
* dd/time-reentrancy:
mingw: use {gm,local}time_s as backend for {gm,local}time_r
archive-zip.c: switch to reentrant localtime_r
date.c: switch to reentrant {gm,local}time_r
Diffstat (limited to 'compat')
-rw-r--r-- | compat/mingw.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/compat/mingw.c b/compat/mingw.c index c2a4835104..76ac8713d2 100644 --- a/compat/mingw.c +++ b/compat/mingw.c @@ -1018,16 +1018,16 @@ int pipe(int filedes[2]) struct tm *gmtime_r(const time_t *timep, struct tm *result) { - /* gmtime() in MSVCRT.DLL is thread-safe, but not reentrant */ - memcpy(result, gmtime(timep), sizeof(struct tm)); - return result; + if (gmtime_s(result, timep) == 0) + return result; + return NULL; } struct tm *localtime_r(const time_t *timep, struct tm *result) { - /* localtime() in MSVCRT.DLL is thread-safe, but not reentrant */ - memcpy(result, localtime(timep), sizeof(struct tm)); - return result; + if (localtime_s(result, timep) == 0) + return result; + return NULL; } char *mingw_getcwd(char *pointer, int len) |