xpath FEATURE distinguish between traversed node and its value
... for xpath on schema.
Fixes #1538
diff --git a/src/tree_schema.c b/src/tree_schema.c
index 09ac9fb..2881cb2 100644
--- a/src/tree_schema.c
+++ b/src/tree_schema.c
@@ -545,8 +545,9 @@
(*set)->size = xp_set.used;
for (i = 0; i < xp_set.used; ++i) {
- if ((xp_set.val.scnodes[i].type == LYXP_NODE_ELEM) && (xp_set.val.scnodes[i].in_ctx >= LYXP_SET_SCNODE_ATOM)) {
- assert((xp_set.val.scnodes[i].in_ctx == LYXP_SET_SCNODE_ATOM) ||
+ if ((xp_set.val.scnodes[i].type == LYXP_NODE_ELEM) && (xp_set.val.scnodes[i].in_ctx >= LYXP_SET_SCNODE_ATOM_NODE)) {
+ assert((xp_set.val.scnodes[i].in_ctx == LYXP_SET_SCNODE_ATOM_NODE) ||
+ (xp_set.val.scnodes[i].in_ctx == LYXP_SET_SCNODE_ATOM_VAL) ||
(xp_set.val.scnodes[i].in_ctx == LYXP_SET_SCNODE_ATOM_CTX));
ret = ly_set_add(*set, xp_set.val.scnodes[i].scnode, 1, NULL);
LY_CHECK_GOTO(ret, cleanup);