struct lookup_table_entry *metadata_lte;
struct image_metadata *imd;
struct image_metadata *new_imd;
- int ret;
wimlib_assert(root_dentry != NULL);
filename = path_basename(root_disk_path);
root = new_dentry_with_timeless_inode(filename);
- if (!root)
- return WIMLIB_ERR_NOMEM;
+ if (!root) {
+ if (errno == EILSEQ)
+ return WIMLIB_ERR_INVALID_UTF8_STRING;
+ else if (errno == ENOMEM)
+ return WIMLIB_ERR_NOMEM;
+ else
+ return WIMLIB_ERR_ICONV_NOT_AVAILABLE;
+ }
inode = root->d_inode;
struct dentry *root_dentry = NULL;
struct wim_security_data *sd;
struct capture_config config;
- struct hlist_head inode_list;
+ struct image_metadata *imd;
int ret;
if (add_image_flags & WIMLIB_ADD_IMAGE_FLAG_NTFS) {
if (ret != 0)
goto out_free_dentry_tree;
+ imd = &w->image_metadata[w->hdr.image_count - 1];
- ret = dentry_tree_fix_inodes(root_dentry, &inode_list);
+ ret = dentry_tree_fix_inodes(root_dentry, &imd->inode_list);
if (ret != 0)
goto out_destroy_imd;
DEBUG("Assigning hard link group IDs");
- assign_inode_numbers(&inode_list);
- w->image_metadata[w->hdr.image_count - 1].inode_list = inode_list;
+ assign_inode_numbers(&imd->inode_list);
ret = xml_add_image(w, name);
if (ret != 0)