Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Python (http://www.velocityreviews.com/forums/f43-python.html)
-   -   PyTuple_Check and other type check functions didn't check the NULLpointer (http://www.velocityreviews.com/forums/t601148-pytuple_check-and-other-type-check-functions-didnt-check-the-nullpointer.html)

NotGuru 03-23-2008 11:01 PM

PyTuple_Check and other type check functions didn't check the NULLpointer
 
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.


John Machin 03-23-2008 11:31 PM

Re: PyTuple_Check and other type check functions didn't check theNULL pointer
 
On Mar 24, 10:01 am, NotGuru <xu.math...@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.

Christian Heimes 03-24-2008 01:24 AM

Re: PyTuple_Check and other type check functions didn't check theNULL pointer
 
NotGuru schrieb:
> 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.



Unless stated otherwise no Py* or PY* function is NULL safe. You have to
check for NULL unless the docs *explicitly* say it's safe to call it
with a NULL argument.

Christian


NotGuru 03-24-2008 04:24 AM

Re: PyTuple_Check and other type check functions didn't check theNULL pointer
 
On Mar 23, 8:24*pm, Christian Heimes <li...@cheimes.de> wrote:
> NotGuru schrieb:
>
> > 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.

>
> Unless stated otherwise no Py* or PY* function is NULL safe. You have to
> check for NULL unless the docs *explicitly* say it's safe to call it
> with a NULL argument.
>
> Christian


Thank you Christian and John, I skipped Section 1.3 of that document,
so shameful. ;)


All times are GMT. The time now is 04:37 PM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.