[glib/wip/antoniof/fallback-timezone-cache-lookup: 6/6] Revert "gtimezone: Cache timezones based on the identifier they were created by"
- From: António Fernandes <antoniof src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/wip/antoniof/fallback-timezone-cache-lookup: 6/6] Revert "gtimezone: Cache timezones based on the identifier they were created by"
- Date: Thu, 1 Oct 2020 20:46:57 +0000 (UTC)
commit 5a7e67d4a52cfd5e4e699bb40524647d856e6dc6
Author: António Fernandes <antoniof gnome org>
Date: Wed Sep 23 19:36:49 2020 +0100
Revert "gtimezone: Cache timezones based on the identifier they were created by"
This reverts commit 851241f19a3fd9ec693b3dd8f37a84c7f970984a.
That commit avoids a performance regression but introduces a behavior regression:
changes to /etc/localtime have no effect for the remaining of the application's
runtime.
With the optimization introduced by the previous commit, we can pass NULL to
g_time_zone_new() repeatedly with no performance drawback, so we no longer have
to workaround this case.
glib/gtimezone.c | 13 +++----------
1 file changed, 3 insertions(+), 10 deletions(-)
---
diff --git a/glib/gtimezone.c b/glib/gtimezone.c
index daf5c1027..2e94f03fe 100644
--- a/glib/gtimezone.c
+++ b/glib/gtimezone.c
@@ -198,7 +198,6 @@ static GHashTable/*<string?, GTimeZone>*/ *time_zones;
G_LOCK_DEFINE_STATIC (tz_default);
static GTimeZone *tz_default = NULL;
G_LOCK_DEFINE_STATIC (tz_local);
-static gchar *tzenv_cached = NULL;
static GTimeZone *tz_local = NULL;
#define MIN_TZYEAR 1916 /* Daylight Savings started in WWI */
@@ -1860,17 +1859,11 @@ g_time_zone_new_local (void)
G_LOCK (tz_local);
/* Is time zone changed and must be flushed? */
- if (tz_local && g_strcmp0 (tzenv, tzenv_cached) != 0)
- {
- g_clear_pointer (&tz_local, g_time_zone_unref);
- g_clear_pointer (&tzenv_cached, g_free);
- }
+ if (tz_local && g_strcmp0 (g_time_zone_get_identifier (tz_local), tzenv))
+ g_clear_pointer (&tz_local, g_time_zone_unref);
if (tz_local == NULL)
- {
- tz_local = g_time_zone_new (tzenv);
- tzenv_cached = g_strdup (tzenv);
- }
+ tz_local = g_time_zone_new (tzenv);
tz = g_time_zone_ref (tz_local);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]