diff options
author | Alexander Larsson <alexl@redhat.com> | 2009-06-18 20:19:48 +0200 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2009-06-23 15:10:28 +0200 |
commit | 8c539a40fd2d758c29125b02e2dd260b10e9067f (patch) | |
tree | 07ba109924b2dda24a54d2e92c0397245786fc36 /metadata | |
parent | 4e0d8b97655f7c78b7da642351bc919f1f5b2f5c (diff) | |
download | gvfs-8c539a40fd2d758c29125b02e2dd260b10e9067f.tar.gz |
Cache extra_prefix calculation too
Diffstat (limited to 'metadata')
-rw-r--r-- | metadata/metatree.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/metadata/metatree.c b/metadata/metatree.c index b7a1d315..e2d04b8c 100644 --- a/metadata/metatree.c +++ b/metadata/metatree.c @@ -1892,6 +1892,7 @@ struct _MetaLookupCache { char *last_parent; char *last_parent_expanded; char *last_parent_mountpoint; + char *last_parent_mountpoint_extra_prefix; dev_t last_device; char *last_device_tree; @@ -2239,6 +2240,7 @@ find_mountpoint_for (MetaLookupCache *cache, { g_free (dir); cache->last_parent_mountpoint = last; + cache->last_parent_mountpoint_extra_prefix = get_extra_prefix_for_mount (last); break; } @@ -2254,12 +2256,8 @@ find_mountpoint_for (MetaLookupCache *cache, if (*prefix == 0) prefix = "/"; - extra_prefix = get_extra_prefix_for_mount (cache->last_parent_mountpoint); - if (extra_prefix) - { - *prefix_out = g_build_filename (extra_prefix, prefix, NULL); - g_free (extra_prefix); - } + if (cache->last_parent_mountpoint_extra_prefix) + *prefix_out = g_build_filename (cache->last_parent_mountpoint_extra_prefix, prefix, NULL); else *prefix_out = g_strdup (prefix); @@ -2312,6 +2310,7 @@ meta_lookup_cache_free (MetaLookupCache *cache) g_free (cache->last_parent); g_free (cache->last_parent_expanded); g_free (cache->last_parent_mountpoint); + g_free (cache->last_parent_mountpoint_extra_prefix); g_free (cache); } @@ -2366,6 +2365,8 @@ expand_parents (MetaLookupCache *cache, cache->last_parent_expanded = expand_all_symlinks (parent); g_free (cache->last_parent_mountpoint); cache->last_parent_mountpoint = NULL; + g_free (cache->last_parent_mountpoint_extra_prefix); + cache->last_parent_mountpoint_extra_prefix = NULL; } else g_free (parent); |