[glib/wip/antoniof/fallback-timezone-cache-lookup: 4/5] Revert "gtimezone: Cache timezones based on the identifier they were created by"




commit bb01e05e8e790f7b8f8c489cb6e0b41900e6fd37
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 da9c3fe65..7f5eb0cc9 100644
--- a/glib/gtimezone.c
+++ b/glib/gtimezone.c
@@ -196,7 +196,6 @@ struct _GTimeZone
 G_LOCK_DEFINE_STATIC (time_zones);
 static GHashTable/*<string?, GTimeZone>*/ *time_zones;
 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 */
@@ -1836,17 +1835,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]