
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