diff --git a/Doxyfile.in b/Doxyfile.in
index c08bade..6d7170a 100644
--- a/Doxyfile.in
+++ b/Doxyfile.in
@@ -781,7 +781,7 @@
 # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
 # Note: If this tag is empty the current directory is searched.
 
-INPUT                  = @CMAKE_BINARY_DIR@/src/libyang.h \
+INPUT                  = ./src/libyang.h \
                          ./src/tree_schema.h \
                          ./src/log.h \
                          ./src/set.h \
diff --git a/src/context.c b/src/context.c
index 74fc2ea..8a388fd 100644
--- a/src/context.c
+++ b/src/context.c
@@ -111,10 +111,7 @@
         return ly_set_rm_index(&ctx->search_paths, index);
     } else {
         /* remove them all */
-        for (; ctx->search_paths.count; ctx->search_paths.count--) {
-            free(ctx->search_paths.objs[ctx->search_paths.count - 1]);
-        }
-        free(ctx->search_paths.objs);
+        ly_set_erase(&ctx->search_paths, free);
         memset(&ctx->search_paths, 0, sizeof ctx->search_paths);
     }
 
@@ -280,7 +277,7 @@
     free(ctx->list.objs);
 
     /* search paths list */
-    ly_ctx_unset_searchdirs(ctx, -1);
+    ly_set_erase(&ctx->search_paths, free);
 
     /* clean the error list */
     ly_err_clean(ctx, 0);
diff --git a/src/set.c b/src/set.c
index 6cfc0af..c9be886 100644
--- a/src/set.c
+++ b/src/set.c
@@ -26,11 +26,39 @@
 }
 
 API void
-ly_set_free(struct ly_set *set)
+ly_set_clean(struct ly_set *set, void (*destructor)(void *obj))
+{
+    unsigned int u;
+
+    LY_CHECK_ARG_RET(NULL, set,);
+
+    if (destructor) {
+        for (u = 0; u < set->count; ++u) {
+            destructor(set->objs[u]);
+        }
+    }
+    set->count = 0;
+}
+
+API void
+ly_set_erase(struct ly_set *set, void (*destructor)(void *obj))
 {
     LY_CHECK_ARG_RET(NULL, set,);
 
+    ly_set_clean(set, destructor);
+
     free(set->objs);
+    set->size = 0;
+    set->objs = NULL;
+}
+
+API void
+ly_set_free(struct ly_set *set, void (*destructor)(void *obj))
+{
+    LY_CHECK_ARG_RET(NULL, set,);
+
+    ly_set_erase(set, destructor);
+
     free(set);
 }
 
@@ -135,7 +163,7 @@
     trg->count += ret;
 
     /* cleanup */
-    ly_set_free(src);
+    ly_set_free(src, NULL);
     return ret;
 }
 
@@ -176,11 +204,3 @@
     return ly_set_rm_index(set, i);
 }
 
-API LY_ERR
-ly_set_clean(struct ly_set *set)
-{
-    LY_CHECK_ARG_RET(NULL, set, LY_EINVAL);
-
-    set->count = 0;
-    return LY_SUCCESS;
-}
diff --git a/src/set.h b/src/set.h
index f1df154..85fddd4 100644
--- a/src/set.h
+++ b/src/set.h
@@ -113,9 +113,9 @@
  * @brief Remove all objects from the set, but keep the set container for further use.
  *
  * @param[in] set Set to clean.
- * @return LY_ERR return value.
+ * @param[in] destructor Optional function to free the objects in the set.
  */
-LY_ERR ly_set_clean(struct ly_set *set);
+void ly_set_clean(struct ly_set *set, void (*destructor)(void *obj));
 
 /**
  * @brief Remove an object from the set.
@@ -142,11 +142,22 @@
 LY_ERR ly_set_rm_index(struct ly_set *set, unsigned int index);
 
 /**
- * @brief Free the ::ly_set data. Frees only the set structure content, not the referred data.
+ * @brief Free the ::ly_set data. If the destructor is not provided, it frees only the set structure
+ * content, not the referred data.
  *
  * @param[in] set The set to be freed.
+ * @param[in] destructor Optional function to free the objects in the set.
  */
-void ly_set_free(struct ly_set *set);
+void ly_set_free(struct ly_set *set, void (*destructor)(void *obj));
+
+/**
+ * @brief Alternative to the ly_set_free() for static ::ly_set objects - in contrast to ly_set_free()
+ * it does not free the provided ::ly_set object.
+ *
+ * @param[in] set The set to be erased.
+ * @param[in] destructor Optional function to free the objects in the set.
+ */
+void ly_set_erase(struct ly_set *set, void (*destructor)(void *obj));
 
 /** @} lyset */
 
