data tree BUGFIX compare leaves with their real types
diff --git a/src/tree_data.c b/src/tree_data.c
index 9f47816..01a4a33 100644
--- a/src/tree_data.c
+++ b/src/tree_data.c
@@ -1772,7 +1772,6 @@
struct lyd_node_term *term1, *term2;
struct lyd_node_any *any1, *any2;
struct lyd_node_opaq *opaq1, *opaq2;
- struct lysc_type *type;
size_t len1, len2;
if (!node1 || !node2) {
@@ -1825,11 +1824,13 @@
}
}
- term1 = (struct lyd_node_term*)node1;
- term2 = (struct lyd_node_term*)node2;
- type = ((struct lysc_node_leaf*)node1->schema)->type;
+ term1 = (struct lyd_node_term *)node1;
+ term2 = (struct lyd_node_term *)node2;
+ if (term1->value.realtype != term2->value.realtype) {
+ return LY_ENOT;
+ }
- return type->plugin->compare(&term1->value, &term2->value);
+ return term1->value.realtype->plugin->compare(&term1->value, &term2->value);
case LYS_CONTAINER:
if (options & LYD_COMPARE_DEFAULTS) {
if ((node1->flags & LYD_DEFAULT) != (node2->flags & LYD_DEFAULT)) {