[Libguestfs] [PATCH nbdkit 1/8] python: Use PyObject_CallFunction instead of constructing the tuple.

Eric Blake eblake at redhat.com
Mon Nov 25 17:17:51 UTC 2019


On 11/21/19 10:58 AM, Richard W.M. Jones wrote:
> It is unclear why we were constructing this by hand, but using the
> following tip we can use PyObject_CallFunction:
> https://stackoverflow.com/a/21221335
> ---
>   plugins/python/python.c | 17 ++++++-----------
>   1 file changed, 6 insertions(+), 11 deletions(-)
> 

> -    r = PyObject_CallObject (fn, args);
> +    r = PyObject_CallFunction (fn, "OiLO",
> +                               obj, count, offset,
> +                               may_trim ? Py_True : Py_False, NULL);

The use of trailing ', NULL' is appears to be copy-and-paste from my 
earlier commit 5ae45c00, where I used it on 3 of the 4 conversions made 
there.  It is not necessary, nor is it mentioned in the mentioned 
stackoverflow link.  If you have a format string, a trailing NULL is not 
necessary because the format string tells how many varargs to consume; 
but with PyObject_CallFunctionObjArgs, a trailing NULL is necessary 
because there is no format string and the varargs are parsed as a series 
of Python objects until a trailing NULL terminator is encountered.

I've pushed an obvious cleanup patch.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org




More information about the Libguestfs mailing list