wrong parent pointer correction in mxml_add_special_node_at
This commit is contained in:
@@ -565,14 +565,6 @@ PMXML_NODE mxml_add_special_node_at(PMXML_NODE parent, int node_type, const char
|
||||
pchild = parent->child;
|
||||
parent->child = (PMXML_NODE)realloc(parent->child, sizeof(MXML_NODE)*(parent->n_children+1));
|
||||
|
||||
if (parent->child != pchild) {
|
||||
/* correct parent pointer for children */
|
||||
for (i=0 ; i<parent->n_children ; i++) {
|
||||
pchild = parent->child+i;
|
||||
for (j=0 ; j<pchild->n_children ; j++)
|
||||
pchild->child[j].parent = pchild;
|
||||
}
|
||||
}
|
||||
}
|
||||
assert(parent->child);
|
||||
|
||||
@@ -581,6 +573,13 @@ PMXML_NODE mxml_add_special_node_at(PMXML_NODE parent, int node_type, const char
|
||||
for (i=parent->n_children ; i > index ; i--)
|
||||
memcpy(&parent->child[i], &parent->child[i-1], sizeof(MXML_NODE));
|
||||
|
||||
/* correct parent pointer for children */
|
||||
for (i=0 ; i<parent->n_children ; i++) {
|
||||
pchild = parent->child+i;
|
||||
for (j=0 ; j<pchild->n_children ; j++)
|
||||
pchild->child[j].parent = pchild;
|
||||
}
|
||||
|
||||
/* initialize new node */
|
||||
pnode = &parent->child[index];
|
||||
memset(pnode, 0, sizeof(MXML_NODE));
|
||||
|
||||
Reference in New Issue
Block a user