[Libguestfs] [PATCH libnbd] generator: Add Mutable type to the generator.

Eric Blake eblake at redhat.com
Tue Jun 25 20:47:46 UTC 2019


On 6/25/19 12:11 PM, Richard W.M. Jones wrote:
> Mutable (Int n) => int *n
> 
> This can currently only be used for callback arguments of type int
> (not for other types, nor for any ordinary function arguments), but it
> could be implemented more generally in future.
> ---
>  generator/generator | 75 +++++++++++++++++++++++++++++++++++++--------
>  1 file changed, 63 insertions(+), 12 deletions(-)
> 

> @@ -3261,14 +3265,20 @@ let print_python_binding name { args; ret } =
>              pr "  for (size_t i = 0; i < %s; ++i)\n" len;
>              pr "    PyList_SET_ITEM (py_%s, i, PyLong_FromUnsignedLong (%s[i]));\n" n n
>           | BytesIn _ -> ()
> +         | Mutable (Int n) ->
> +            pr "  PyObject *py_%s_dict = PyImport_GetModuleDict ();\n" n;
> +            pr "  PyObject *py_%s_mod = PyMapping_GetItemString (py_%s_dict, \"ctypes\");\n" n n;
> +            pr "  PyObject *py_%s = PyObject_CallMethod (py_%s_mod, \"c_int\", \"i\", *%s);\n" n n n

PyMapping_GetItemString() is returning NULL, then the program is
segfaulting on PyObject_CallMethod. This code needs some error checking
to be safe, as well as a tweak to more properly call into Python (did we
forget an earlier global import of the ctypes module?).

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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20190625/d8a719cc/attachment.sig>


More information about the Libguestfs mailing list