xpath BUGFIX handle non-term nodes in deref
Fixes cesnet/netopeer2#961
@@ -3750,7 +3750,7 @@ xpath_deref(struct lyxp_set **args, uint16_t UNUSED(arg_count), struct lyxp_set
if (args[0]->type != LYXP_SET_SCNODE_SET) {
LOGWRN(set->ctx, "Argument #1 of %s not a node-set as expected.", __func__);
} else if ((sleaf = (struct lysc_node_leaf *)warn_get_scnode_in_ctx(args[0]))) {
- if (!(sleaf->nodetype & (LYS_LEAF | LYS_LEAFLIST))) {
+ if (!(sleaf->nodetype & LYD_NODE_TERM)) {
LOGWRN(set->ctx, "Argument #1 of %s is a %s node \"%s\".", __func__, lys_nodetype2str(sleaf->nodetype),
sleaf->name);
} else if (!warn_is_specific_type(sleaf->type, LY_TYPE_LEAFREF) &&
@@ -3760,7 +3760,7 @@ xpath_deref(struct lyxp_set **args, uint16_t UNUSED(arg_count), struct lyxp_set
}
}
set_scnode_clear_ctx(set, LYXP_SET_SCNODE_ATOM_VAL);
- if (sleaf && (sleaf->type->basetype == LY_TYPE_LEAFREF)) {
+ if (sleaf && (sleaf->nodetype & LYD_NODE_TERM) && (sleaf->type->basetype == LY_TYPE_LEAFREF)) {
lref = (struct lysc_type_leafref *)sleaf->type;
oper = (sleaf->flags & LYS_IS_OUTPUT) ? LY_PATH_OPER_OUTPUT : LY_PATH_OPER_INPUT;
