mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-22 05:05:11 +00:00
Fix a memory leak when creating Python3 modules. (#2019)
This commit is contained in:
parent
dc9006db4f
commit
819802da99
@ -794,11 +794,16 @@ public:
|
||||
explicit module(const char *name, const char *doc = nullptr) {
|
||||
if (!options::show_user_defined_docstrings()) doc = nullptr;
|
||||
#if PY_MAJOR_VERSION >= 3
|
||||
PyModuleDef *def = new PyModuleDef();
|
||||
PyModuleDef *def = PyMem_New(PyModuleDef, 1);
|
||||
std::memset(def, 0, sizeof(PyModuleDef));
|
||||
def->m_name = name;
|
||||
def->m_doc = doc;
|
||||
def->m_size = -1;
|
||||
def->m_free = [](void* module ) {
|
||||
if (module != nullptr) {
|
||||
Py_XDECREF(PyModule_GetDef((PyObject*) module));
|
||||
}
|
||||
};
|
||||
Py_INCREF(def);
|
||||
m_ptr = PyModule_Create(def);
|
||||
#else
|
||||
|
Loading…
Reference in New Issue
Block a user