glib: fix g_reload_user_special_dirs_cache
authorMarc-Antoine Perennou <Marc-Antoine@Perennou.com>
Tue, 22 May 2012 19:56:10 +0000 (21:56 +0200)
committerMarc-Antoine Perennou <Marc-Antoine@Perennou.com>
Fri, 1 Jun 2012 08:46:00 +0000 (10:46 +0200)
We handle a special case for G_USER_DIRECTORY_DESKTOP
when we init the values but drop it when we reload them.
Fix this by preferring old values to NULL

https://bugzilla.gnome.org/show_bug.cgi?id=676594

Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
glib/gutils.c

index 7765d5a..42a98fc 100644 (file)
@@ -1731,14 +1731,18 @@ g_reload_user_special_dirs_cache (void)
       /* only leak changed directories */
       for (i = 0; i < G_USER_N_DIRECTORIES; i++)
         {
       /* only leak changed directories */
       for (i = 0; i < G_USER_N_DIRECTORIES; i++)
         {
-         old_val = old_g_user_special_dirs[i];
-         if (g_strcmp0 (old_val, g_user_special_dirs[i]) == 0)
+          old_val = old_g_user_special_dirs[i];
+          if (g_user_special_dirs[i] == NULL)
             {
             {
-             /* don't leak */
-             g_free (g_user_special_dirs[i]);
-             g_user_special_dirs[i] = old_val;
+              g_user_special_dirs[i] = old_val;
             }
             }
-         else
+          else if (g_strcmp0 (old_val, g_user_special_dirs[i]) == 0)
+            {
+              /* don't leak */
+              g_free (g_user_special_dirs[i]);
+              g_user_special_dirs[i] = old_val;
+            }
+          else
             g_free (old_val);
         }
 
             g_free (old_val);
         }