xpath BUGFIX null dereference
diff --git a/src/xpath.c b/src/xpath.c
index 4dbd7ca..da661a9 100644
--- a/src/xpath.c
+++ b/src/xpath.c
@@ -742,11 +742,13 @@
set_init(struct lyxp_set *new, struct lyxp_set *set)
{
memset(new, 0, sizeof *new);
- new->ctx = set->ctx;
- new->ctx_node = set->ctx_node;
- new->local_mod = set->local_mod;
- new->trees = set->trees;
- new->format = set->format;
+ if (set) {
+ new->ctx = set->ctx;
+ new->ctx_node = set->ctx_node;
+ new->local_mod = set->local_mod;
+ new->trees = set->trees;
+ new->format = set->format;
+ }
}
/**
@@ -6903,7 +6905,7 @@
break;
default:
- LOGINT_RET(set->ctx);
+ LOGINT_RET(set ? set->ctx : NULL);
}
return LY_SUCCESS;
@@ -7163,7 +7165,7 @@
break;
default:
- LOGINT_RET(set->ctx);
+ LOGINT_RET(set ? set->ctx : NULL);
}
} while ((exp->used > *exp_idx) && (exp->tokens[*exp_idx] == LYXP_TOKEN_OPERATOR_PATH));
@@ -7590,7 +7592,7 @@
if (set) {
set_scnode_clear_ctx(set);
}
- rc = eval_number(set->ctx, exp, exp_idx, NULL);
+ rc = eval_number(NULL, exp, exp_idx, NULL);
} else {
rc = eval_number(set->ctx, exp, exp_idx, set);
}