diff --git a/mxml.c b/mxml.c index 30422ff..a91a525 100755 --- a/mxml.c +++ b/mxml.c @@ -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 ; in_children ; i++) { - pchild = parent->child+i; - for (j=0 ; jn_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 ; in_children ; i++) { + pchild = parent->child+i; + for (j=0 ; jn_children ; j++) + pchild->child[j].parent = pchild; + } + /* initialize new node */ pnode = &parent->child[index]; memset(pnode, 0, sizeof(MXML_NODE));