diff options
author | Junio C Hamano <gitster@pobox.com> | 2019-12-16 13:08:31 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-12-16 13:08:31 -0800 |
commit | 4755a34c47c6d624d77ce90c7ea5247b43829cc0 (patch) | |
tree | 3ad415411bd7dfed02ce8ab0b645e0c043c08a19 /compat | |
parent | Merge branch 'ag/sequencer-todo-updates' (diff) | |
parent | mingw: use {gm,local}time_s as backend for {gm,local}time_r (diff) | |
download | tgif-4755a34c47c6d624d77ce90c7ea5247b43829cc0.tar.xz |
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) |