wrong parent pointer correction in mxml_add_special_node_at

This commit is contained in:
Matthias Schneebeli
2006-11-17 21:44:34 +00:00
parent 169e848290
commit 17ef5507af
+7 -8
View File
@@ -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));