X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fresource.c;h=7baaa15ca4ba4c59d4126e76be0baf1d086fb4b3;hp=167901c9f7ae79f00398617a90f624a17bba60b1;hb=20e4ed048c57bd26e7f4da4b265aedbdd4f574a6;hpb=67f45cecd793345416d5d85fbe37ec54b1bb6ef8 diff --git a/src/resource.c b/src/resource.c index 167901c9..7baaa15c 100644 --- a/src/resource.c +++ b/src/resource.c @@ -1128,7 +1128,7 @@ int read_metadata_resource(WIMStruct *w, struct image_metadata *imd) u32 dentry_offset; int ret; struct dentry *dentry; - struct inode_table *inode_tab; + struct inode_table inode_tab; const struct lookup_table_entry *metadata_lte; u64 metadata_len; u64 metadata_offset; @@ -1204,6 +1204,7 @@ int read_metadata_resource(WIMStruct *w, struct image_metadata *imd) dentry->prev = dentry; if (ret != 0) goto out_free_dentry_tree; + list_add(&dentry->inode_dentry_list, &dentry->inode->dentry_list); /* Now read the entire directory entry tree into memory. */ DEBUG("Reading dentry tree"); @@ -1219,14 +1220,15 @@ int read_metadata_resource(WIMStruct *w, struct image_metadata *imd) /* Build hash table that maps hard link group IDs to dentry sets */ DEBUG("Building link group table"); - inode_tab = new_inode_table(9001); - if (!inode_tab) + ret = init_inode_table(&inode_tab, 9001); + if (ret != 0) goto out_free_dentry_tree; - for_dentry_in_tree(dentry, inode_table_insert, inode_tab); + + for_dentry_in_tree(dentry, inode_table_insert, &inode_tab); DEBUG("Fixing inconsistencies in the link groups"); - ret = fix_inodes(inode_tab, &inode_list); - free_inode_table(inode_tab); + ret = fix_inodes(&inode_tab, &inode_list); + destroy_inode_table(&inode_tab); if (ret != 0) goto out_free_dentry_tree;