diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plist.c | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/src/plist.c b/src/plist.c index 4600198..eb0160c 100644 --- a/src/plist.c +++ b/src/plist.c @@ -321,7 +321,7 @@ PLIST_API void plist_free(plist_t plist) } } -static plist_t plist_copy_node(node_t *node, void *parent_node_ptr) +static plist_t plist_copy_node(node_t *node) { plist_type node_type = PLIST_NONE; plist_t newnode = NULL; @@ -362,20 +362,13 @@ static plist_t plist_copy_node(node_t *node, void *parent_node_ptr) } newnode = plist_new_node(newdata); - if (*(plist_t*)parent_node_ptr) - { - node_attach(*(plist_t*)parent_node_ptr, newnode); - } - else - { - *(plist_t*)parent_node_ptr = newnode; - } - node_t *ch; unsigned int node_index = 0; for (ch = node_first_child(node); ch; ch = node_next_sibling(ch)) { - /* copy child node and attach to new parent node */ - plist_t newch = plist_copy_node(ch, &newnode); + /* copy child node */ + plist_t newch = plist_copy_node(ch); + /* attach to new parent node */ + node_attach(newnode, newch); /* if needed, add child node to lookup table of parent node */ switch (node_type) { case PLIST_ARRAY: @@ -398,8 +391,7 @@ static plist_t plist_copy_node(node_t *node, void *parent_node_ptr) PLIST_API plist_t plist_copy(plist_t node) { - plist_t copied = NULL; - return plist_copy_node(node, &copied); + return plist_copy_node(node); } PLIST_API uint32_t plist_array_get_size(plist_t node) |