]> wimlib.net Git - wimlib/blobdiff - src/mount_image.c
set_message_queue_names(): while => for
[wimlib] / src / mount_image.c
index d2ce94b215e36e1ab774a34cf90b12d07d71eb64..bd1a7d54bc5aee6660905ef3be4fa24407380ecf 100644 (file)
@@ -802,7 +802,7 @@ static int rebuild_wim(struct wimfs_context *ctx, int write_flags,
        }
 
        DEBUG("Calculating SHA1 checksums for all new staging files.");
-       list_for_each_entry(lte, &ctx->staging_list, staging_list) {
+       list_for_each_entry_safe(lte, tmp, &ctx->staging_list, staging_list) {
                ret = update_lte_of_staging_file(lte, w->lookup_table);
                if (ret != 0)
                        return ret;
@@ -848,12 +848,9 @@ static int set_message_queue_names(struct wimfs_context *ctx,
                        return WIMLIB_ERR_NOTDIR;
        }
 
-       p = dir_path;
-       while (*p) {
+       for (p = dir_path; *p; p++)
                if (*p == '/')
                        *p = 0xff;
-               p++;
-       }
 
        ctx->unmount_to_daemon_mq_name = strcat_dup(u2d_prefix, dir_path,
                                                    NAME_MAX);
@@ -2499,6 +2496,12 @@ WIMLIBAPI int wimlib_mount_image(WIMStruct *wim, int image, const char *dir,
 
        if (ret)
                ret = WIMLIB_ERR_FUSE;
+
+       /* Try to delete the staging directory if a deletion wasn't yet
+        * attempted due to an earlier error */
+       if (ctx.staging_dir_name)
+               delete_staging_dir(&ctx);
+
 out_free_dir_copy:
        FREE(dir_copy);
 out_unlock: