mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-10 07:10:06 +00:00
Fix getaddrinfo for [!_STATBUF_ST_NSEC] case.
This commit is contained in:
parent
750c1f2a9a
commit
a084405777
@ -1,5 +1,12 @@
|
||||
2012-08-17 Roland McGrath <roland@hack.frob.com>
|
||||
|
||||
* sysdeps/posix/getaddrinfo.c
|
||||
(save_gaiconf_mtime, check_gaiconf_mtime): New functions.
|
||||
(gaiconf_init, gaiconf_reload): Use them.
|
||||
[!_STATBUF_ST_NSEC]
|
||||
(gaiconf_mtime, save_gaiconf_mtime, check_gaiconf_mtime):
|
||||
Define using time_t rather than struct timespec.
|
||||
|
||||
* sysdeps/generic/malloc-machine.h (MUTEX_INITIALIZER): New macro.
|
||||
(atomic_full_barrier, atomic_read_barrier, atomic_write_barrier):
|
||||
Macros removed.
|
||||
|
@ -1855,8 +1855,41 @@ static int gaiconf_reload_flag;
|
||||
static int gaiconf_reload_flag_ever_set;
|
||||
|
||||
/* Last modification time. */
|
||||
#ifdef _STATBUF_ST_NSEC
|
||||
|
||||
static struct timespec gaiconf_mtime;
|
||||
|
||||
static inline void
|
||||
save_gaiconf_mtime (const struct stat64 *st)
|
||||
{
|
||||
gaiconf_mtime = st->st_mtim;
|
||||
}
|
||||
|
||||
static inline bool
|
||||
check_gaiconf_mtime (const struct stat64 *st)
|
||||
{
|
||||
return (st->st_mtim.tv_sec == gaiconf_mtime.tv_sec
|
||||
&& st->st_mtim.tv_nsec == gaiconf_mtime.tv_nsec);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static time_t gaiconf_mtime;
|
||||
|
||||
static inline void
|
||||
save_gaiconf_mtime (const struct stat64 *st)
|
||||
{
|
||||
gaiconf_mtime = st->st_mtime;
|
||||
}
|
||||
|
||||
static inline bool
|
||||
check_gaiconf_mtime (const struct stat64 *st)
|
||||
{
|
||||
return st->mtime == gaiconf_mtime;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
libc_freeres_fn(fini)
|
||||
{
|
||||
@ -2298,7 +2331,7 @@ gaiconf_init (void)
|
||||
if (oldscope != default_scopes)
|
||||
free ((void *) oldscope);
|
||||
|
||||
gaiconf_mtime = st.st_mtim;
|
||||
save_gaiconf_mtime (&st);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2320,7 +2353,7 @@ gaiconf_reload (void)
|
||||
{
|
||||
struct stat64 st;
|
||||
if (__xstat64 (_STAT_VER, GAICONF_FNAME, &st) != 0
|
||||
|| memcmp (&st.st_mtim, &gaiconf_mtime, sizeof (gaiconf_mtime)) != 0)
|
||||
|| !check_gaiconf_mtime (&st))
|
||||
gaiconf_init ();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user