fix crash with Py3 when releasing memory buffer
This commit is contained in:
@@ -1293,6 +1293,7 @@ Document::~Document()
|
||||
// not to dec'ref the Python object any more.
|
||||
// But we must still invalidate the Python object because it doesn't need to be
|
||||
// destructed right now because the interpreter can own several references to it.
|
||||
Base::PyGILStateLocker lock;
|
||||
Base::PyObjectBase* doc = (Base::PyObjectBase*)DocumentPythonObject.ptr();
|
||||
// Call before decrementing the reference counter, otherwise a heap error can occur
|
||||
doc->setInvalid();
|
||||
|
||||
@@ -63,6 +63,7 @@ DocumentObject::DocumentObject(void)
|
||||
DocumentObject::~DocumentObject(void)
|
||||
{
|
||||
if (!PythonObject.is(Py::_None())){
|
||||
Base::PyGILStateLocker lock;
|
||||
// Remark: The API of Py::Object has been changed to set whether the wrapper owns the passed
|
||||
// Python object or not. In the constructor we forced the wrapper to own the object so we need
|
||||
// not to dec'ref the Python object any more.
|
||||
|
||||
Reference in New Issue
Block a user