- /* Insert the red-black tree node */
- root = &map->rb_root;
- p = &root->rb_node;
- rb_parent = NULL;
- while (*p) {
- struct dos_name_node *this;
-
- this = container_of(*p, struct dos_name_node, rb_node);
- rb_parent = *p;
- if (new_node->ntfs_ino < this->ntfs_ino)
- p = &((*p)->rb_left);
- else if (new_node->ntfs_ino > this->ntfs_ino)
- p = &((*p)->rb_right);
- else {
- /* This should be impossible since a NTFS inode cannot
- * have multiple DOS names, and we only should get each
- * DOS name entry once from the ntfs_readdir() calls. */
- ERROR("NTFS inode %"PRIu64" has multiple DOS names",
- le64_to_cpu(ntfs_ino));
- return -1;
- }
+ /* Insert the search tree node */
+ if (avl_tree_insert(&map->root, &new_node->index_node,
+ _avl_cmp_by_ntfs_ino))
+ {
+ /* This should be impossible since an NTFS inode cannot
+ * have multiple DOS names, and we only should get each
+ * DOS name entry once from the ntfs_readdir() calls. */
+ ERROR("NTFS inode %"PRIu64" has multiple DOS names",
+ le64_to_cpu(ntfs_ino));
+ FREE(new_node);
+ return -1;