[gjs: 15/18] repo: Use an autopointer to free the versions list, don't leak on error




commit f4af2e52a27faa2b9cc1cdc0787d984736cba0ba
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date:   Wed Oct 14 14:10:28 2020 +0200

    repo: Use an autopointer to free the versions list, don't leak on error

 gi/repo.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
---
diff --git a/gi/repo.cpp b/gi/repo.cpp
index ca42bf15..d34e3b16 100644
--- a/gi/repo.cpp
+++ b/gi/repo.cpp
@@ -74,6 +74,8 @@ static bool get_version_for_ns(JSContext* context, JS::HandleObject repo_obj,
     return gjs_object_require_property(context, versions, NULL, ns_id, version);
 }
 
+static void strlist_free(GList* l) { g_list_free_full(l, g_free); }
+
 GJS_JSAPI_RETURN_CONVENTION
 static bool resolve_namespace_object(JSContext* context,
                                      JS::HandleObject repo_obj,
@@ -92,7 +94,8 @@ static bool resolve_namespace_object(JSContext* context,
         return false;
     }
 
-    GList* versions = g_irepository_enumerate_versions(nullptr, ns_name.get());
+    GjsAutoPointer<GList, GList, strlist_free> versions =
+        g_irepository_enumerate_versions(nullptr, ns_name.get());
     unsigned nversions = g_list_length(versions);
     if (nversions > 1 && !version &&
         !g_irepository_is_registered(nullptr, ns_name.get(), nullptr) &&
@@ -101,7 +104,6 @@ static bool resolve_namespace_object(JSContext* context,
                       "imports.gi.versions to pick one",
                       ns_name.get(), nversions))
         return false;
-    g_list_free_full(versions, g_free);
 
     error = NULL;
     g_irepository_require(nullptr, ns_name.get(), version.get(),


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]