D4118: index: make node tree a Python object
yuja (Yuya Nishihara)
phabricator at mercurial-scm.org
Thu Aug 9 09:24:18 EDT 2018
yuja added a comment.
> > I think the default tp_new clears the memory of the object, so it won't be uninitialized (maybe that's what you mean by "luckily", but I first thought your meant it would require luck for it to be set to 0).
>
> Interesting. tp_alloc is documented to initialize memory to zeros.
>
> https://docs.python.org/2/c-api/typeobj.html#c.PyTypeObject.tp_alloc
>
> So https://phab.mercurial-scm.org/rHGe57c532c3835f6b244f21815cafcce0df1d272ce was a moot?
Nah, it crashed. Perhaps, `tp_new` and `tp_alloc` wouldn't be called by
`PyObject_New()`, which is said that "fields not defined by the Python
object header are not initialized."
https://docs.python.org/2/c-api/allocation.html#c.PyObject_New
In https://phab.mercurial-scm.org/rHGe57c532c3835f6b244f21815cafcce0df1d272ce^, `parsers.parse_index2(0, 0)` crashed but `parsers.index()`
didn't if I fixed `Py_DECREF(self->data)` in `index_dealloc()`.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D4118
To: martinvonz, #hg-reviewers
Cc: yuja, mercurial-devel
More information about the Mercurial-devel
mailing list