[libvirt] [PATCH 1/2] python: Add new helper functions for python to C integral conversion

Guannan Ren gren at redhat.com
Tue Mar 27 05:46:23 UTC 2012


On 03/27/2012 07:03 AM, Eric Blake wrote:
>
> +int
> +libvirt_boolUnwrap(PyObject *obj, bool *val)
> +{
> +    int ret = -1;
> +
> +    /* We only accept PyInt_Type, PyLong_Type and PyBool_Type
> +     * as the boolean representation.
> Why?
>
>> +     */
>> +    if (PyInt_Check(obj) ||
>> +        PyLong_Check(obj) || PyBool_Check(obj)) {
>> +        ret = PyObject_IsTrue(obj);
> Why not blindly use PyObject_IsTrue(obj), and accept _all_ objects that
> can be converted to python truth values, rather than forcing things to
> be PyInt, PyBool, or PyLong?

         If we don't check here, these APIs which use libvirt_boolUnwrap
    will not have any checking for its type of arguments in bool wise.
    The upper python code could pass a null list or dictionary as a False.
         Maybe a little bit loose use here. but It's fine to blindly use 
it actually.

     Guannan Ren




More information about the libvir-list mailing list