]> wimlib.net Git - wimlib/blobdiff - src/dentry.c
NTFS apply: fix extracting links
[wimlib] / src / dentry.c
index 08c08ab683fbc3f9c036840fd79c48d92c953296..81a04d2b1534408e7c44580fb40c9cee991e5c86 100644 (file)
@@ -1117,9 +1117,9 @@ void inode_remove_ads(struct wim_inode *inode, u16 idx,
 
        destroy_ads_entry(ads_entry);
 
-       memcpy(&inode->i_ads_entries[idx],
-              &inode->i_ads_entries[idx + 1],
-              (inode->i_num_ads - idx - 1) * sizeof(inode->i_ads_entries[0]));
+       memmove(&inode->i_ads_entries[idx],
+               &inode->i_ads_entries[idx + 1],
+               (inode->i_num_ads - idx - 1) * sizeof(inode->i_ads_entries[0]));
        inode->i_num_ads--;
 }
 #endif
@@ -1745,14 +1745,13 @@ static u8 *write_dentry_tree_recursive(const struct wim_dentry *parent, u8 *p)
         * recursively writing the directory trees rooted at each of the child
         * dentries, since the on-disk dentries for a dentry's children are
         * always located at consecutive positions in the metadata resource! */
-       for_dentry_in_rbtree(parent->d_inode->i_children.rb_node, write_dentry_cb, &p);
+       for_dentry_child(parent, write_dentry_cb, &p);
 
        /* write end of directory entry */
        p = put_u64(p, 0);
 
        /* Recurse on children. */
-       for_dentry_in_rbtree(parent->d_inode->i_children.rb_node,
-                            write_dentry_tree_recursive_cb, &p);
+       for_dentry_child(parent, write_dentry_tree_recursive_cb, &p);
        return p;
 }