Store a pointer to the real parent in reparent dirs.
This commit is contained in:
parent
811655a9a1
commit
227b17f251
@ -651,6 +651,9 @@ int reparent(Ecma119Node *child, Ecma119Node *parent)
|
|||||||
return ISO_ERROR;
|
return ISO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* keep track of the real parent */
|
||||||
|
child->info.dir.real_parent = child->parent;
|
||||||
|
|
||||||
/* add the child to its new parent */
|
/* add the child to its new parent */
|
||||||
child->parent = parent;
|
child->parent = parent;
|
||||||
parent->info.dir.nchildren++;
|
parent->info.dir.nchildren++;
|
||||||
|
@ -29,6 +29,11 @@ struct ecma119_dir_info {
|
|||||||
|
|
||||||
size_t nchildren;
|
size_t nchildren;
|
||||||
Ecma119Node **children;
|
Ecma119Node **children;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Real parent if the dir has been reallocated. NULL otherwise.
|
||||||
|
*/
|
||||||
|
Ecma119Node *real_parent;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -51,6 +56,8 @@ struct ecma119_node
|
|||||||
enum ecma119_node_type type;
|
enum ecma119_node_type type;
|
||||||
union {
|
union {
|
||||||
IsoFileSrc *file;
|
IsoFileSrc *file;
|
||||||
|
// TODO this wastes too much memory, as dirs have much more
|
||||||
|
// atts than other kind of files. Replace with a pointer.
|
||||||
struct ecma119_dir_info dir;
|
struct ecma119_dir_info dir;
|
||||||
/** this field points to the relocated directory. */
|
/** this field points to the relocated directory. */
|
||||||
Ecma119Node *real_me;
|
Ecma119Node *real_me;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user