}
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;
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);
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: