Re: things I don't understand in src/env/time.c + bugs + suggested patch

Andrew Makhorin <[email protected]>
Newsgroups gmane.comp.gnu.glpk
Message-ID <1485710531.11687.7.camel@corvax>
Hi Chris,

> > Not sure, but gmtime_s looks like a MSVC function. Could you point me
> > out where gmtime_s is standardized? Thanks.
> 
> gmtime_s is included in the (optional) annex K of C11. However, the
> parameters are reversed compared to the MSVC version and the standard
> one returns struct tm * while the MSVC one returns errno_t.
> 
> Moreover, some searching shows that gmtime_s is documented starting
> with VS 2010 (and _gmtime_s in VS 2005 and VS 2008). However, since VS
> 2005 gmtime returns a different pointer per thread [1], so there is no
> reason to use gmtime_s here - gmtime_s offers additional error
> checking for null pointers, which is not an issue in this code.
> 

Thank you for information.

As Heinrich noticed, gmtime, strerror, and strtok are non-thread-safe
(for example, in most recent version of glibc strtok just uses a static
pointer without a tls specifier), so in a multi-threaded environment
thread-safe versions of these functions should be used. The problem I
encountered is that gcc (Debian 4.7.2-5) 4.7.2 installed on my Linux
machine doesn't have gmtime_s, strerror_s, and strtok_s. It is unclear
what to do if no thread-safe version of these functions are available.


Andrew Makhorin
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.