diff options
author | Eric Blake <eblake@redhat.com> | 2012-08-31 10:07:19 -0700 |
---|---|---|
committer | Eric Blake <eblake@redhat.com> | 2012-08-31 14:31:13 -0700 |
commit | 63bfc5982328ae1fddbc861a953c9798b40e22b1 (patch) | |
tree | c84ea75002c3093e908344f76d5547c1556ddce4 /python | |
parent | qemu: Support for Block Device IO Limits. (diff) | |
download | libvirt-63bfc5982328ae1fddbc861a953c9798b40e22b1.tar.gz libvirt-63bfc5982328ae1fddbc861a953c9798b40e22b1.tar.bz2 libvirt-63bfc5982328ae1fddbc861a953c9798b40e22b1.zip |
python: don't mask libvirt errors
A user reported this crash when using python bindings:
File "/home/nox/workspace/NOX/src/NOX/hooks.py", line 134, in trigger
hook.trigger(event)
File "/home/nox/workspace/NOX/src/NOX/hooks.py", line 33, in trigger
self.handlers[event]()
File "/home/nox/workspace/NOX/hooks/volatility.py", line 81, in memory_dump
for block in Memory(self.ctx):
File "/home/see/workspace/NOX/src/NOX/lib/libtools.py", line 179, in next
libvirt.VIR_MEMORY_PHYSICAL)
File "/usr/lib/python2.7/dist-packages/libvirt.py", line 1759, in memoryPeek
ret = libvirtmod.virDomainMemoryPeek(self._o, start, size, flags)
SystemError: error return without exception set
In the python bindings, returning NULL makes python think an
exception was thrown, while returning the None object lets the
wrappers know that a libvirt error exists.
Reported by Nox DaFox, fix suggested by Dan Berrange.
* python/libvirt-override.c (libvirt_virDomainBlockPeek)
(libvirt_virDomainMemoryPeek): Return python's None object, so
wrapper knows to check libvirt error.
Diffstat (limited to 'python')
-rw-r--r-- | python/libvirt-override.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/python/libvirt-override.c b/python/libvirt-override.c index 8b41dff2a..65e8c69dd 100644 --- a/python/libvirt-override.c +++ b/python/libvirt-override.c @@ -5763,8 +5763,10 @@ libvirt_virDomainBlockPeek(PyObject *self ATTRIBUTE_UNUSED, c_retval = virDomainBlockPeek(domain, disk, offset, size, buf, flags); LIBVIRT_END_ALLOW_THREADS; - if (c_retval < 0) + if (c_retval < 0) { + py_retval = VIR_PY_NONE; goto cleanup; + } py_retval = PyString_FromStringAndSize(buf, size); @@ -5798,8 +5800,10 @@ libvirt_virDomainMemoryPeek(PyObject *self ATTRIBUTE_UNUSED, c_retval = virDomainMemoryPeek(domain, start, size, buf, flags); LIBVIRT_END_ALLOW_THREADS; - if (c_retval < 0) + if (c_retval < 0) { + py_retval = VIR_PY_NONE; goto cleanup; + } py_retval = PyString_FromStringAndSize(buf, size); |