[libvirt] [PATCH 2/2] python: fix snapshot listing bugs
Peter Krempa
pkrempa at redhat.com
Tue Jun 12 09:12:20 UTC 2012
On 06/11/12 22:52, Eric Blake wrote:
> Python exceptions are different than libvirt errors, and we had
> some corner case bugs on OOM situations.
>
> * python/libvirt-override.c (libvirt_virDomainSnapshotListNames)
> (libvirt_virDomainSnapshotListChildrenNames): Use correct error
> returns, avoid segv on OOM, and avoid memory leaks on error.
> ---
> python/libvirt-override.c | 56 +++++++++++++++++++++++++++++++--------------
> 1 file changed, 39 insertions(+), 17 deletions(-)
>
> diff --git a/python/libvirt-override.c b/python/libvirt-override.c
> index da5cb9a..676002c 100644
> --- a/python/libvirt-override.c
> +++ b/python/libvirt-override.c
> @@ -2045,7 +2048,7 @@ libvirt_virDomainSnapshotListNames(PyObject *self ATTRIBUTE_UNUSED,
>
> if (c_retval) {
> if (VIR_ALLOC_N(names, c_retval) < 0)
> - return VIR_PY_NONE;
> + return PyErr_NoMemory();
I'll have to tweak my domain list python bindings to use this func too.
> LIBVIRT_BEGIN_ALLOW_THREADS;
> c_retval = virDomainSnapshotListNames(dom, names, c_retval, flags);
> LIBVIRT_END_ALLOW_THREADS;
> +cleanup:
> + for (i = 0; i < c_retval; i++)
> + VIR_FREE(names[i]);
> + VIR_FREE(names);
Probably not worth optimizing this not to iterate the array on success.
> return py_retval;
> }
>
ACK.
Peter
More information about the libvir-list
mailing list