manifest: fix possible SEGV caused by uninitialized lazymanifest fields
Before, uninitialized self->pydata would be passed to lazymanifest_dealloc()
on OOM, and Py_DECREF(self->pydata) would crash if we were unlucky.
It's still wrong to do malloc() thingy in tp_init because __init__() may be
called more than once [1], but I don't want to go a step further in stable
branch.
[1]: https://docs.python.org/2/c-api/typeobj.html#c.PyTypeObject.tp_new
"The tp_new function should ... do only as much further initialization as
is absolutely necessary. Initialization that can safely be ignored or
repeated should be placed in the tp_init handler."
# extension to emulate interrupting filemerge._filemerge
from __future__ import absolute_import
from mercurial import (
error,
extensions,
filemerge,
)
def failfilemerge(filemergefn,
premerge, repo, wctx, mynode, orig, fcd, fco, fca,
labels=None):
raise error.Abort("^C")
return filemergefn(premerge, repo, mynode, orig, fcd, fco, fca, labels)
def extsetup(ui):
extensions.wrapfunction(filemerge, '_filemerge',
failfilemerge)