diff options
author | Matthias Clasen <matthiasc@src.gnome.org> | 2008-07-01 02:32:12 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2008-07-01 02:32:12 +0000 |
commit | 8af6c328a96c3e06dc862863d6862504326196cf (patch) | |
tree | 5a51f3072a03ebb7d14dfd49f1cb3fe90918af13 | |
parent | faf349a2f92d89daf273a77b27691b068417696b (diff) | |
download | glib-8af6c328a96c3e06dc862863d6862504326196cf.tar.gz |
Bug 530196 – _g_local_file_has_trash_dir() doesn't handle st_dev == 0
* glocalfile.c (_g_local_file_has_trash_dir): Handle the case that
st_dev might be zero.
svn path=/branches/glib-2-16/; revision=7117
-rw-r--r-- | gio/ChangeLog | 9 | ||||
-rw-r--r-- | gio/glocalfile.c | 12 |
2 files changed, 15 insertions, 6 deletions
diff --git a/gio/ChangeLog b/gio/ChangeLog index daee38e64..355ecbced 100644 --- a/gio/ChangeLog +++ b/gio/ChangeLog @@ -1,3 +1,12 @@ +2008-06-30 Matthias Clasen <mclasen@redhat.com> + + Backported from trunk: + + Bug 530196 – _g_local_file_has_trash_dir() doesn't handle st_dev == 0 + + * glocalfile.c (_g_local_file_has_trash_dir): Handle the case that + st_dev might be zero. + 2008-06-29 Matthias Clasen <mclasen@redhat.com> Bug 540423 – unrecoverable error after g_seekable_truncate(seekable, diff --git a/gio/glocalfile.c b/gio/glocalfile.c index a668127ae..782e90e87 100644 --- a/gio/glocalfile.c +++ b/gio/glocalfile.c @@ -1580,7 +1580,8 @@ escape_trash_name (char *name) gboolean _g_local_file_has_trash_dir (const char *dirname, dev_t dir_dev) { - static gsize home_dev = 0; + static gsize home_dev_set = 0; + static dev_t home_dev; char *topdir, *globaldir, *trashdir, *tmpname; uid_t uid; char uid_str[32]; @@ -1588,18 +1589,17 @@ _g_local_file_has_trash_dir (const char *dirname, dev_t dir_dev) gboolean res; int statres; - if (g_once_init_enter (&home_dev)) + if (g_once_init_enter (&home_dev_set)) { - gsize setup_value = 0; struct stat home_stat; g_stat (g_get_home_dir (), &home_stat); - setup_value = home_stat.st_dev; - g_once_init_leave (&home_dev, setup_value); + home_dev = home_stat.st_dev; + g_once_init_leave (&home_dev_set, 1); } /* Assume we can trash to the home */ - if (dir_dev == (dev_t)home_dev) + if (dir_dev == home_dev) return TRUE; topdir = find_mountpoint_for (dirname, dir_dev); |