mirror of
https://gitea.psi.ch/ELOG/mxml.git
synced 2026-09-09 01:23:22 +00:00
wrong parent pointer correction in mxml_add_special_node_at
This commit is contained in:
parent
169e848290
commit
17ef5507af
15
mxml.c
15
mxml.c
@ -565,14 +565,6 @@ PMXML_NODE mxml_add_special_node_at(PMXML_NODE parent, int node_type, const char
|
|||||||
pchild = parent->child;
|
pchild = parent->child;
|
||||||
parent->child = (PMXML_NODE)realloc(parent->child, sizeof(MXML_NODE)*(parent->n_children+1));
|
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);
|
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--)
|
for (i=parent->n_children ; i > index ; i--)
|
||||||
memcpy(&parent->child[i], &parent->child[i-1], sizeof(MXML_NODE));
|
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 */
|
/* initialize new node */
|
||||||
pnode = &parent->child[index];
|
pnode = &parent->child[index];
|
||||||
memset(pnode, 0, sizeof(MXML_NODE));
|
memset(pnode, 0, sizeof(MXML_NODE));
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user