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