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);
         }