diff --git a/libretro-db/libretrodb.c b/libretro-db/libretrodb.c index 08201305d6..77051e5700 100644 --- a/libretro-db/libretrodb.c +++ b/libretro-db/libretrodb.c @@ -319,7 +319,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 b3a1fbdaca..1f5bf9d7b9 100644 --- a/libretro-db/query.c +++ b/libretro-db/query.c @@ -850,6 +850,11 @@ 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,