]> wimlib.net Git - wimlib/blobdiff - src/mount_image.c
Update version to 1.4.2
[wimlib] / src / mount_image.c
index d9a03a998febc11e2ecc2bb932d956a164be8551..f1baebba1338516e788d5edc00b539aa1ffa4723 100644 (file)
@@ -259,8 +259,13 @@ inode_put_fd(struct wim_inode *inode, struct wimfs_fd *fd)
 
        inode->i_fds[fd->idx] = NULL;
        FREE(fd);
-       if (--inode->i_num_opened_fds == 0 && inode->i_nlink == 0)
-               free_inode(inode);
+       if (--inode->i_num_opened_fds == 0) {
+               FREE(inode->i_fds);
+               inode->i_fds = NULL;
+               inode->i_num_allocated_fds = 0;
+               if (inode->i_nlink == 0)
+                       free_inode(inode);
+       }
 }
 
 static int
@@ -802,7 +807,7 @@ rebuild_wim(struct wimfs_context *ctx, int write_flags,
 {
        int ret;
        struct wim_lookup_table_entry *lte, *tmp;
-       WIMStruct *w = ctx->wim;
+       WIMStruct *wim = ctx->wim;
        struct wim_image_metadata *imd = wim_get_current_image_metadata(ctx->wim);
 
        DEBUG("Closing all staging file descriptors.");
@@ -824,8 +829,8 @@ rebuild_wim(struct wimfs_context *ctx, int write_flags,
                }
        }
 
-       xml_update_image_info(w, w->current_image);
-       ret = wimlib_overwrite(w, write_flags, 0, progress_func);
+       xml_update_image_info(wim, wim->current_image);
+       ret = wimlib_overwrite(wim, write_flags, 0, progress_func);
        if (ret)
                ERROR("Failed to commit changes to mounted WIM image");
        return ret;
@@ -1671,10 +1676,10 @@ wimfs_link(const char *to, const char *from)
        struct wim_dentry *from_dentry, *from_dentry_parent;
        const char *link_name;
        struct wim_inode *inode;
-       WIMStruct *w = wimfs_get_WIMStruct();
+       WIMStruct *wim = wimfs_get_WIMStruct();
        int ret;
 
-       inode = wim_pathname_to_inode(w, to);
+       inode = wim_pathname_to_inode(wim, to);
        if (!inode)
                return -errno;
 
@@ -1682,7 +1687,7 @@ wimfs_link(const char *to, const char *from)
                                   FILE_ATTRIBUTE_REPARSE_POINT))
                return -EPERM;
 
-       from_dentry_parent = get_parent_dentry(w, from);
+       from_dentry_parent = get_parent_dentry(wim, from);
        if (!from_dentry_parent)
                return -errno;
        if (!dentry_is_directory(from_dentry_parent))
@@ -1872,9 +1877,9 @@ wimfs_opendir(const char *path, struct fuse_file_info *fi)
        int ret;
        struct wimfs_fd *fd = NULL;
        struct wimfs_context *ctx = wimfs_get_context();
-       WIMStruct *w = ctx->wim;
+       WIMStruct *wim = ctx->wim;
 
-       inode = wim_pathname_to_inode(w, path);
+       inode = wim_pathname_to_inode(wim, path);
        if (!inode)
                return -errno;
        if (!inode_is_directory(inode))
@@ -2072,9 +2077,9 @@ static int
 wimfs_rmdir(const char *path)
 {
        struct wim_dentry *dentry;
-       WIMStruct *w = wimfs_get_WIMStruct();
+       WIMStruct *wim = wimfs_get_WIMStruct();
 
-       dentry = get_dentry(w, path);
+       dentry = get_dentry(wim, path);
        if (!dentry)
                return -errno;
 
@@ -2084,7 +2089,7 @@ wimfs_rmdir(const char *path)
        if (dentry_has_children(dentry))
                return -ENOTEMPTY;
 
-       remove_dentry(dentry, w->lookup_table);
+       remove_dentry(dentry, wim->lookup_table);
        return 0;
 }
 
@@ -2240,9 +2245,9 @@ wimfs_utimens(const char *path, const struct timespec tv[2])
 {
        struct wim_dentry *dentry;
        struct wim_inode *inode;
-       WIMStruct *w = wimfs_get_WIMStruct();
+       WIMStruct *wim = wimfs_get_WIMStruct();
 
-       dentry = get_dentry(w, path);
+       dentry = get_dentry(wim, path);
        if (!dentry)
                return -errno;
        inode = dentry->d_inode;
@@ -2267,9 +2272,9 @@ wimfs_utime(const char *path, struct utimbuf *times)
 {
        struct wim_dentry *dentry;
        struct wim_inode *inode;
-       WIMStruct *w = wimfs_get_WIMStruct();
+       WIMStruct *wim = wimfs_get_WIMStruct();
 
-       dentry = get_dentry(w, path);
+       dentry = get_dentry(wim, path);
        if (!dentry)
                return -errno;
        inode = dentry->d_inode;