data tree FEATURE dedicated any value setting function
... which can be used for freeing the value or
copying new value.
diff --git a/src/tree_data_free.c b/src/tree_data_free.c
index 42db31c..9cb946e 100644
--- a/src/tree_data_free.c
+++ b/src/tree_data_free.c
@@ -168,19 +168,8 @@
lyd_free_subtree(iter, 0);
}
} else if (node->schema->nodetype & LYD_NODE_ANY) {
- switch (((struct lyd_node_any *)node)->value_type) {
- case LYD_ANYDATA_DATATREE:
- lyd_free_all(((struct lyd_node_any *)node)->value.tree);
- break;
- case LYD_ANYDATA_STRING:
- case LYD_ANYDATA_XML:
- case LYD_ANYDATA_JSON:
- FREE_STRING(LYD_NODE_CTX(node), ((struct lyd_node_any *)node)->value.str);
- break;
- case LYD_ANYDATA_LYB:
- free(((struct lyd_node_any *)node)->value.mem);
- break;
- }
+ /* only frees the value this way */
+ lyd_any_copy_value(node, NULL, 0);
} else if (node->schema->nodetype & LYD_NODE_TERM) {
((struct lysc_node_leaf *)node->schema)->type->plugin->free(LYD_NODE_CTX(node), &((struct lyd_node_term *)node)->value);
}