summaryrefslogtreecommitdiff
path: root/metadata
diff options
context:
space:
mode:
Diffstat (limited to 'metadata')
-rw-r--r--metadata/metatree.c13
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);