On 03/20/2014 11:52 AM, Eric Blake wrote:
On 03/20/2014 11:28 AM, Cole Robinson wrote:
> Right now, on failure, libvirt.py doesn't raise an exception and just
> returns -1 to the user.
> ---
> libvirt-override.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libvirt-override.c b/libvirt-override.c
> index 7f746ed..9fed299 100644
> --- a/libvirt-override.c
> +++ b/libvirt-override.c
> @@ -2326,7 +2326,7 @@ libvirt_virConnectGetCPUModelNames(PyObject *self
ATTRIBUTE_UNUSED,
> LIBVIRT_END_ALLOW_THREADS;
>
> if (c_retval == -1)
> - return VIR_PY_INT_FAIL;
> + return VIR_PY_NONE;
>
Incomplete. The error: label needs the same treatment.
ACK with that fix.
Actually, I take that back. We need a v2. If the error: label is
reached, returning VIR_PY_INT_FAIL is wrong; but so is returning
VIR_PY_NONE. We _want_ to return NULL in that case, because the error
label is called only after a python failure (PyList_New or
libvirt_constcharPtrWrap, which generally means OOM) - and python
failures are distinguished by returning NULL (reserving -1/None for
libvirt failures).
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org