From: Marc-Antoine Perennou Date: Tue, 22 May 2012 19:56:10 +0000 (+0200) Subject: glib: fix g_reload_user_special_dirs_cache X-Git-Tag: 2.33.2~13 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ce5bd68e26d0e67c24313076b7f634f1dcac81b9;p=platform%2Fupstream%2Fglib.git glib: fix g_reload_user_special_dirs_cache 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 --- diff --git a/glib/gutils.c b/glib/gutils.c index 7765d5a..42a98fc 100644 --- a/glib/gutils.c +++ b/glib/gutils.c @@ -1731,14 +1731,18 @@ g_reload_user_special_dirs_cache (void) /* 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); }