diff --git a/src/tree_data.c b/src/tree_data.c
index bb931ee..a40d4c4 100644
--- a/src/tree_data.c
+++ b/src/tree_data.c
@@ -2696,22 +2696,26 @@
             LYXP_IGNORE_WHEN);
     LY_CHECK_GOTO(ret, cleanup);
 
+    if (xp_set.type != LYXP_SET_NODE_SET) {
+        LOGERR(LYD_CTX(tree), LY_EINVAL, "XPath \"%s\" result is not a node set.", xpath);
+        ret = LY_EINVAL;
+        goto cleanup;
+    }
+
     /* allocate return set */
     ret = ly_set_new(set);
     LY_CHECK_GOTO(ret, cleanup);
 
-    /* transform into ly_set */
-    if (xp_set.type == LYXP_SET_NODE_SET) {
-        /* allocate memory for all the elements once (even though not all items must be elements but most likely will be) */
-        (*set)->objs = malloc(xp_set.used * sizeof *(*set)->objs);
-        LY_CHECK_ERR_GOTO(!(*set)->objs, LOGMEM(LYD_CTX(tree)); ret = LY_EMEM, cleanup);
-        (*set)->size = xp_set.used;
+    /* transform into ly_set, allocate memory for all the elements once (even though not all items must be
+     * elements but most likely will be) */
+    (*set)->objs = malloc(xp_set.used * sizeof *(*set)->objs);
+    LY_CHECK_ERR_GOTO(!(*set)->objs, LOGMEM(LYD_CTX(tree)); ret = LY_EMEM, cleanup);
+    (*set)->size = xp_set.used;
 
-        for (i = 0; i < xp_set.used; ++i) {
-            if (xp_set.val.nodes[i].type == LYXP_NODE_ELEM) {
-                ret = ly_set_add(*set, xp_set.val.nodes[i].node, 1, NULL);
-                LY_CHECK_GOTO(ret, cleanup);
-            }
+    for (i = 0; i < xp_set.used; ++i) {
+        if (xp_set.val.nodes[i].type == LYXP_NODE_ELEM) {
+            ret = ly_set_add(*set, xp_set.val.nodes[i].node, 1, NULL);
+            LY_CHECK_GOTO(ret, cleanup);
         }
     }
 
diff --git a/src/tree_data.h b/src/tree_data.h
index 7d1e51d..1414bcc 100644
--- a/src/tree_data.h
+++ b/src/tree_data.h
@@ -2453,7 +2453,7 @@
  * (unless they are defined in top-level). Other predicates can still follow the aforementioned ones.
  *
  * @param[in] ctx_node XPath context node.
- * @param[in] xpath [XPath](@ref howtoXPath) to select in JSON format.
+ * @param[in] xpath [XPath](@ref howtoXPath) to select in JSON format. It must evaluate into a node set.
  * @param[out] set Set of found data nodes. In case the result is a number, a string, or a boolean,
  * the returned set is empty.
  * @return LY_SUCCESS on success, @p set is returned.
