Skip to content

Commit f473833

Browse files
committed
Should fix #173.
Former-commit-id: 50a0acf
1 parent a0e5c4a commit f473833

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

src/lib_python/ViZDoomGamePython.cpp

+7-5
Original file line numberDiff line numberDiff line change
@@ -225,16 +225,18 @@ namespace vizdoom {
225225
return vector;
226226
}
227227

228-
bpy::object DoomGamePython::dataToNumpyArray(int dims, npy_intp * shape, int type, void * data){
228+
bpy::object DoomGamePython::dataToNumpyArray(int dims, npy_intp *shape, int type, void *data) {
229229
PyObject *pyArray = PyArray_SimpleNewFromData(dims, shape, type, data);
230230
/* This line makes a copy: */
231-
pyArray = PyArray_FROM_OTF(pyArray, type, NPY_ARRAY_ENSURECOPY | NPY_ARRAY_ENSUREARRAY);
232-
bpy::handle<> numpyHandle = bpy::handle<>(pyArray);
233-
bpy::object numpyArray = bpy::object(numpyHandle);
231+
PyObject *pyArrayCopied = PyArray_FROM_OTF(pyArray, type, NPY_ARRAY_ENSURECOPY | NPY_ARRAY_ENSUREARRAY);
232+
/* And this line gets rid of the old object which caused a memory leak: */
233+
Py_DECREF(pyArray);
234234

235+
bpy::handle<> numpyArrayBoostHandle = bpy::handle<>(pyArrayCopied);
236+
bpy::object boostNumpyArray = bpy::object(numpyArrayBoostHandle);
235237
/* This line caused occasional segfaults in python3 */
236238
//bpyn::array numpyArray = bpyn::array(numpyHandle);
237239

238-
return numpyArray;
240+
return boostNumpyArray;
239241
}
240242
}

0 commit comments

Comments
 (0)