From: Eric Biggers Date: Mon, 28 Apr 2014 05:51:10 +0000 (-0500) Subject: rename_wim_path(): Fix journaling of name change X-Git-Tag: v1.7.0~256 X-Git-Url: https://wimlib.net/git/?p=wimlib;a=commitdiff_plain;h=b3b6ef83d0f4218640c635f572c2b29d63e8e023;ds=sidebyside rename_wim_path(): Fix journaling of name change --- diff --git a/src/update_image.c b/src/update_image.c index 3e7613fc..06a6ad30 100644 --- a/src/update_image.c +++ b/src/update_image.c @@ -1022,28 +1022,23 @@ rename_wim_path(WIMStruct *wim, const tchar *from, const tchar *to, return -EBUSY; if (j) { + if (dst) + if (journaled_unlink(j, dst)) + return -ENOMEM; + if (journaled_unlink(j, src)) + return -ENOMEM; if (journaled_change_name(j, src, path_basename(to))) return -ENOMEM; + if (journaled_link(j, src, parent_of_dst)) + return -ENOMEM; } else { ret = dentry_set_name(src, path_basename(to)); if (ret) return -ENOMEM; - } - if (dst) { - if (j) { - if (journaled_unlink(j, dst)) - return -ENOMEM; - } else { + if (dst) { unlink_dentry(dst); free_dentry_tree(dst, wim->lookup_table); } - } - if (j) { - if (journaled_unlink(j, src)) - return -ENOMEM; - if (journaled_link(j, src, parent_of_dst)) - return -ENOMEM; - } else { unlink_dentry(src); dentry_add_child(parent_of_dst, src); }