![]() |
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. |
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. |
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 |
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 03:26 PM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.