]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
gendispatch: Use g_autoptr() for virAccessManager
authorMichal Privoznik <mprivozn@redhat.com>
Fri, 7 Nov 2025 11:46:37 +0000 (12:46 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 2 Jul 2026 13:51:18 +0000 (15:51 +0200)
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 <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/access/viraccessmanager.h
src/rpc/gendispatch.pl

index 2050ac9b8558e85a5d196771b829588471a204ad..02661fe81bb9a9c1854a8ae6195d5dccdc3a9149 100644 (file)
@@ -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);
 
index 8cb7d7eda234834705e22b68ffb34fd02580113e..4d385927aa2349e524f84c2183ecdb1c266cd83f 100755 (executable)
@@ -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";
             }