diff --git a/libretro-db/libretrodb.c b/libretro-db/libretrodb.c index b3c2ed170f..4c6887b4f6 100644 --- a/libretro-db/libretrodb.c +++ b/libretro-db/libretrodb.c @@ -323,7 +323,10 @@ retry: if (cursor->query) { if (!libretrodb_query_filter(cursor->query, out)) + { + rmsgpack_dom_value_free(out); goto retry; + } } return 0; diff --git a/libretro-db/query.c b/libretro-db/query.c index 02bbaf1aca..72775e0223 100644 --- a/libretro-db/query.c +++ b/libretro-db/query.c @@ -886,6 +886,10 @@ void libretrodb_query_free(void *q) for (i = 0; i < real_q->root.argc; i++) argument_free(&real_q->root.argv[i]); + + free(real_q->root.argv); + real_q->root.argv = NULL; + free(real_q); } void *libretrodb_query_compile(libretrodb_t *db,