PyTuple_Check and other type check functions didn't check the NULL pointer

John Machin sjmachin at lexicon.net
Sun Mar 23 19:31:29 EDT 2008


On Mar 24, 10:01 am, NotGuru <xu.math... at gmail.com> wrote:
> I was writing some C extensions for Python and use PyTupleType_Check
> extensively. I found that all the PySomeType_Check macros directly
> delegate the job to PyObject_TypeCheck(op, &PyType_Type). The
> PyObject_TypeCheck(op, &PyType_Type) is again a macro and defined as
> ((ob)->ob_type == (tp) || PyType_IsSubtype((ob)->ob_type, (tp)))
>
> in object.h.
>
> My questions is: is it necessary to check the null pointer in the
> macro or it's a job for the user? Semantically all the type check
> should report a false if a null pointer is encountered. I've already
> had the patch to this issue but I am not sure if I think this problem
> right.  I don't know if there are some python core developers around
> but I would like to hear all opinions towards this.
>
> BTW, if the user didn't check null pointer before call the function, a
> segmentation fault might occur.

You should check for null pointer returned by any C-API function that
is meant to return an object pointer; this indicates that an exception
has happened; your code should clean up and exit. See section 1.3 of
the Python/C API Reference Manual.



More information about the Python-list mailing list