[libvirt PATCH 03/10] qemuMonitorGetAllBlockStatsInfo: Assign hash table only on success
Daniel P. Berrangé
berrange at redhat.com
Mon Jul 5 15:47:03 UTC 2021
On Mon, Jul 05, 2021 at 05:36:42PM +0200, Tim Wiederhake wrote:
> `virHashNew` cannot return NULL, the check is not needed.
>
> Signed-off-by: Tim Wiederhake <twiederh at redhat.com>
> ---
> src/qemu/qemu_monitor.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
> index 19fcc5658b..86aabc98c3 100644
> --- a/src/qemu/qemu_monitor.c
> +++ b/src/qemu/qemu_monitor.c
> @@ -2155,23 +2155,23 @@ qemuMonitorGetAllBlockStatsInfo(qemuMonitor *mon,
> bool backingChain)
> {
> int ret;
> + GHashTable *stats = virHashNew(g_free);
> +
> VIR_DEBUG("ret_stats=%p, backing=%d", ret_stats, backingChain);
>
> QEMU_CHECK_MONITOR(mon);
This macro expands with 'return -1', so this change causes a memory
leak of 'stats'. This obscurity is why i don't like macros containing
hidden control flow.
>
> - if (!(*ret_stats = virHashNew(g_free)))
> - goto error;
> -
> - ret = qemuMonitorJSONGetAllBlockStatsInfo(mon, *ret_stats, backingChain);
> + *ret_stats = NULL;
> + ret = qemuMonitorJSONGetAllBlockStatsInfo(mon, stats, backingChain);
>
> if (ret < 0)
> goto error;
>
> + *ret_stats = stats;
> return ret;
>
> error:
> - virHashFree(*ret_stats);
> - *ret_stats = NULL;
> + virHashFree(stats);
> return -1;
> }
>
> --
> 2.31.1
>
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
More information about the libvir-list
mailing list