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
This commit is contained in:
parent
6f7a862bed
commit
086bef8ac8
@ -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)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user