[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs-25 d70ed8a 1/2: Fix time-related data types in 2 edi
From: |
Eli Zaretskii |
Subject: |
[Emacs-diffs] emacs-25 d70ed8a 1/2: Fix time-related data types in 2 editfns.c functions |
Date: |
Mon, 17 Oct 2016 07:26:58 +0000 (UTC) |
branch: emacs-25
commit d70ed8aaeae8529813f591ce548631e424d853a2
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>
Fix time-related data types in 2 editfns.c functions
* src/editfns.c (format_time_string, Fcurrent_time_zone): Pass a
pointer to time_t value to emacs_localtime_rz and gmtime_r,
instead of relying on struct timespec's tv_sec member to be of
compatible type.
---
src/editfns.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/src/editfns.c b/src/editfns.c
index 4e90dad..403569f 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -2054,7 +2054,11 @@ format_time_string (char const *format, ptrdiff_t
formatlen,
USE_SAFE_ALLOCA;
timezone_t tz = tzlookup (zone, false);
- tmp = emacs_localtime_rz (tz, &t.tv_sec, tmp);
+ /* On some systems, like 32-bit MinGW, tv_sec of struct timespec is
+ a 64-bit type, but time_t is a 32-bit type. emacs_localtime_rz
+ expects a pointer to time_t value. */
+ time_t tsec = t.tv_sec;
+ tmp = emacs_localtime_rz (tz, &tsec, tmp);
if (! tmp)
{
xtzfree (tz);
@@ -2313,7 +2317,10 @@ the data it can't find. */)
zone_name = format_time_string ("%Z", sizeof "%Z" - 1, value,
zone, &local_tm);
- if (HAVE_TM_GMTOFF || gmtime_r (&value.tv_sec, &gmt_tm))
+ /* gmtime_r expects a pointer to time_t, but tv_sec of struct
+ timespec on some systems (MinGW) is a 64-bit field. */
+ time_t tsec = value.tv_sec;
+ if (HAVE_TM_GMTOFF || gmtime_r (&tsec, &gmt_tm))
{
long int offset = (HAVE_TM_GMTOFF
? tm_gmtoff (&local_tm)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs-25 d70ed8a 1/2: Fix time-related data types in 2 editfns.c functions,
Eli Zaretskii <=