From a384e9bb5662a12ab09cdb6486b880e12a1cb02a Mon Sep 17 00:00:00 2001 From: ussrhero Date: Tue, 8 May 2018 20:40:30 +0300 Subject: [PATCH] python 2.7 support --- pykd/pymod.cpp | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/pykd/pymod.cpp b/pykd/pymod.cpp index e8903cb..c5cac9e 100644 --- a/pykd/pymod.cpp +++ b/pykd/pymod.cpp @@ -1383,25 +1383,25 @@ void pykd_init() ////////////////////////////////////////////////////////////////////////////////// +#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_index */ 0 /* m_copy */ - }; - - static PyMethodDef initial_methods[] = { { 0, 0, 0, 0 } }; + }; + + static PyMethodDef initial_methods[] = { { 0, 0, 0, 0 } }; static struct PyModuleDef moduledef = { \ initial_base, @@ -1417,6 +1417,24 @@ PyInit_pykd(void) 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 //////////////////////////////////////////////////////////////////////////////////