Merge branch 'pykd-init' into 'vs2017-support'

Pykd init/deinit fix

See merge request pykd/pykd!5
This commit is contained in:
ussrhero 2018-06-02 04:34:01 -04:00
commit b278f8b27f
2 changed files with 59 additions and 3 deletions

@ -1 +1 @@
Subproject commit 107f991bb61245de85862717550cb365d54de2b0 Subproject commit 6f96e046f3e79bc464759c6729d6d344083587e4

View File

@ -127,7 +127,7 @@ void uninitialize()
} }
BOOST_PYTHON_MODULE( pykd ) void pykd_init()
{ {
python::scope().attr("__version__") = pykdVersion; python::scope().attr("__version__") = pykdVersion;
python::scope().attr("version") = pykdVersion; python::scope().attr("version") = pykdVersion;
@ -1382,3 +1382,59 @@ BOOST_PYTHON_MODULE( pykd )
} }
////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////
#if PY_VERSION_HEX >= 0x03000000
void pykd_deinit(void*)
{
if ( kdlib::isInintilized() )
kdlib::uninitialize();
}
PyMODINIT_FUNC
PyInit_pykd(void)
{
static PyModuleDef_Base initial_base = {
PyObject_HEAD_INIT(NULL)
0, /* m_init */
0, /* m_index */
0 /* m_copy */
};
static PyMethodDef initial_methods[] = { { 0, 0, 0, 0 } };
static struct PyModuleDef moduledef = { \
initial_base,
"pykd",
0, /* m_doc */
-1, /* m_size */
initial_methods,
0, /* m_reload */
0, /* m_traverse */
0, /* m_clear */
pykd_deinit
};
return boost::python::detail::init_module(moduledef, pykd_init);
}
#else
void pykd_deinit(PyObject*)
{
if (kdlib::isInintilized())
kdlib::uninitialize();
}
PyMODINIT_FUNC
initpykd()
{
PyObject* moduleObj = boost::python::detail::init_module("pykd", pykd_init);
PyObject* moduleDeiniter = PyCapsule_New( (void*)1, "pykd.__deinit__", pykd_deinit);
PyModule_AddObject(moduleObj, "pykd.__deinit__", moduleDeiniter);
}
#endif
//////////////////////////////////////////////////////////////////////////////////