summaryrefslogtreecommitdiff
path: root/src/timezone
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2020-06-24 15:47:30 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2020-06-24 15:47:30 -0400
commit235c0f6eed2d9f5650f9b6ee0c51601792eff8e4 (patch)
treea94a682d34917b48ac4454bd157c93d6df7a55a0 /src/timezone
parentb8fd4e02c6d01183bf6def5897ad6cf7766bfff4 (diff)
downloadpostgresql-235c0f6eed2d9f5650f9b6ee0c51601792eff8e4.tar.gz
Fix compiler warning induced by commit d8b15eeb8.
I forgot that INT64_FORMAT can't be used with sscanf on Windows. Use the same trick of sscanf'ing into a temp variable as we do in some other places in zic.c. The upstream IANA code avoids the portability problem by relying on <inttypes.h>'s SCNdFAST64 macro. Once we're requiring C99 in all branches, we should do likewise and drop this set of diffs from upstream. For now, though, a hack seems fine, since we do not actually care about leapseconds anyway. Discussion: https://postgr.es/m/4e5d1a5b-143e-e70e-a99d-a3b01c1ae7c3@2ndquadrant.com
Diffstat (limited to 'src/timezone')
-rw-r--r--src/timezone/zic.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/timezone/zic.c b/src/timezone/zic.c
index e5a3ca26f4..10c5b4bfb5 100644
--- a/src/timezone/zic.c
+++ b/src/timezone/zic.c
@@ -1292,7 +1292,20 @@ infile(const char *name)
if (nfields == 0)
{
if (name == leapsec && *buf == '#')
- sscanf(buf, "#expires " INT64_FORMAT, &comment_leapexpires);
+ {
+ /*
+ * PG: INT64_FORMAT isn't portable for sscanf, so be content
+ * with scanning a "long". Once we are requiring C99 in all
+ * live branches, it'd be sensible to adopt upstream's
+ * practice of using the <inttypes.h> macros. But for now, we
+ * don't actually use this code, and it won't overflow before
+ * 2038 anyway.
+ */
+ long cl_tmp;
+
+ sscanf(buf, "#expires %ld", &cl_tmp);
+ comment_leapexpires = cl_tmp;
+ }
}
else if (wantcont)
{