On Tue, Nov 30, 2021 at 15:14:14 +0000, Daniel P. Berrangé wrote: > On Tue, Nov 30, 2021 at 03:32:05PM +0100, Peter Krempa wrote: > > Use 'g_clear_pointer(&ptr, g_hash_table_unref)' instead. > > > > In few instances it allows us to also remove explicit clearing of > > pointers. > > > > Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx> > > --- > > src/conf/domain_addr.c | 2 +- > > src/conf/domain_conf.c | 2 +- > > src/conf/nwfilter_conf.c | 2 +- > > src/conf/nwfilter_ipaddrmap.c | 3 +-- > > src/conf/virchrdev.c | 2 +- > > src/conf/virdomainmomentobjlist.c | 2 +- > > src/conf/virdomainobjlist.c | 4 ++-- > > src/conf/virinterfaceobj.c | 2 +- > > src/conf/virnetworkobj.c | 4 ++-- > > src/conf/virnodedeviceobj.c | 2 +- > > src/conf/virnwfilterbindingdef.c | 2 +- > > src/conf/virnwfilterbindingobjlist.c | 2 +- > > src/conf/virsecretobj.c | 2 +- > > src/conf/virstorageobj.c | 10 +++++----- > > src/hyperv/hyperv_wmi.c | 2 +- > > src/hypervisor/virclosecallbacks.c | 2 +- > > src/libxl/libxl_logger.c | 2 +- > > src/locking/lock_daemon.c | 2 +- > > src/nwfilter/nwfilter_dhcpsnoop.c | 6 +++--- > > src/nwfilter/nwfilter_gentech_driver.c | 2 +- > > src/nwfilter/nwfilter_learnipaddr.c | 7 ++----- > > src/qemu/qemu_domain.c | 2 +- > > src/qemu/qemu_driver.c | 2 +- > > src/rpc/virnetdaemon.c | 2 +- > > src/security/security_selinux.c | 6 +++--- > > src/util/virfilecache.c | 2 +- > > src/util/virhash.c | 2 +- > > src/util/virlockspace.c | 2 +- > > src/util/virmacmap.c | 2 +- > > src/util/virsystemd.c | 2 +- > > tests/nwfilterxml2firewalltest.c | 2 +- > > tests/qemusecuritymock.c | 7 +++---- > > 32 files changed, 45 insertions(+), 50 deletions(-) > > > > diff --git a/src/conf/domain_addr.c b/src/conf/domain_addr.c > > index a06721c35d..49745ba881 100644 > > --- a/src/conf/domain_addr.c > > +++ b/src/conf/domain_addr.c > > @@ -1377,7 +1377,7 @@ void virDomainCCWAddressSetFree(virDomainCCWAddressSet *addrs) > > if (!addrs) > > return; > > > > - virHashFree(addrs->defined); > > + g_clear_pointer(&addrs->defined, g_hash_table_unref); > > This is in a Free() method, so we should just be calling > g_hash_table_unref directly. Likewise for all the other g_hash_table_unref requires a valid GHashTable pointer to be passed. g_clear_pointer ensures that we don't call it while the freed table would be NULL. Most Free* methods are also used on cleanup paths when the insides of the struct may still be NULL and IMO it's not worth analyzing the code and neither converting to: if (htptr) g_hash_table_unref(htptr); for the instances where setting the variable to NULL is pointless.