From: Michal Privoznik Date: Fri, 7 Nov 2025 11:46:37 +0000 (+0100) Subject: gendispatch: Use g_autoptr() for virAccessManager X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=de14bd77a9a3a2c996727429d68c104352d256b3;p=thirdparty%2Flibvirt.git gendispatch: Use g_autoptr() for virAccessManager Let's modify our gendispatch.pl script so that the code it generates for the ACL checks uses g_autoptr instead of explicit unref()-ing in each exit path. Signed-off-by: Michal Privoznik Reviewed-by: Ján Tomko --- diff --git a/src/access/viraccessmanager.h b/src/access/viraccessmanager.h index 2050ac9b85..02661fe81b 100644 --- a/src/access/viraccessmanager.h +++ b/src/access/viraccessmanager.h @@ -38,7 +38,7 @@ void virAccessManagerSetDefault(virAccessManager *manager); virAccessManager *virAccessManagerNew(const char *name); virAccessManager *virAccessManagerNewStack(const char **names); - +G_DEFINE_AUTOPTR_CLEANUP_FUNC(virAccessManager, virObjectUnref); void *virAccessManagerGetPrivateData(virAccessManager *manager); diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl index 8cb7d7eda2..4d385927aa 100755 --- a/src/rpc/gendispatch.pl +++ b/src/rpc/gendispatch.pl @@ -2165,7 +2165,7 @@ elsif ($mode eq "client") { print "/* Returns: $fail on error/denied, $pass on allowed */\n"; print "$ret $apiname(" . join(", ", @argdecls) . ")\n"; print "{\n"; - print " virAccessManager *mgr;\n"; + print " g_autoptr(virAccessManager) mgr = NULL;\n"; print " int rv;\n"; print "\n"; print " if (!(mgr = virAccessManagerGetDefault())) {\n"; @@ -2205,7 +2205,6 @@ elsif ($mode eq "client") { print " "; } print "(rv = $method(" . join(", ", @argvars, $perm) . ")) <= 0) {\n"; - print " virObjectUnref(mgr);\n"; if ($action eq "Ensure") { print " if (rv == 0)\n"; print " virReportError(VIR_ERR_ACCESS_DENIED,\n"; @@ -2219,7 +2218,6 @@ elsif ($mode eq "client") { print "\n"; } - print " virObjectUnref(mgr);\n"; print " return $pass;\n"; print "}\n\n"; }