From ebe5b66ca8e639468e14c4134a415403d949385e Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 17 Dec 2019 10:48:17 +0900 Subject: Reduce tzset calls Set up-to-date flag always when calling tzset(). --- time.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'time.c') diff --git a/time.c b/time.c index ef8a995da4..021421cdbf 100644 --- a/time.c +++ b/time.c @@ -673,16 +673,21 @@ static VALUE tm_from_time(VALUE klass, VALUE time); bool ruby_tz_uptodate_p; +static void +update_tz(void) +{ + if (ruby_tz_uptodate_p) return; + ruby_tz_uptodate_p = true; + tzset(); +} + static struct tm * rb_localtime_r(const time_t *t, struct tm *result) { #if defined __APPLE__ && defined __LP64__ if (*t != (time_t)(int)*t) return NULL; #endif - if (!ruby_tz_uptodate_p) { - ruby_tz_uptodate_p = true; - tzset(); - } + update_tz(); #ifdef HAVE_GMTIME_R result = localtime_r(t, result); #else @@ -3140,9 +3145,7 @@ find_time_t(struct tm *tptr, int utc_p, time_t *tp) find_dst = 0 < tptr->tm_isdst; /* /etc/localtime might be changed. reload it. */ - if (!ruby_tz_uptodate_p) { - tzset(); - } + update_tz(); tm0 = *tptr; if (tm0.tm_mon < 0) { -- cgit v1.2.3