[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