提交 9bdeda96 authored 作者: Pascal Lamblin's avatar Pascal Lamblin

Fix a big memory leak in CudaNdArray_setItem (and a smaller one in zeros)

上级 ed3b9520
...@@ -311,6 +311,7 @@ PyObject* CudaNdarray_Zeros(PyObject* dummy, PyObject* shape) ...@@ -311,6 +311,7 @@ PyObject* CudaNdarray_Zeros(PyObject* dummy, PyObject* shape)
} }
int shp_el = PyInt_AsLong(shp_el_obj); int shp_el = PyInt_AsLong(shp_el_obj);
Py_DECREF(shp_el_obj);
if (shp_el <= 0) if (shp_el <= 0)
{ {
...@@ -320,7 +321,6 @@ PyObject* CudaNdarray_Zeros(PyObject* dummy, PyObject* shape) ...@@ -320,7 +321,6 @@ PyObject* CudaNdarray_Zeros(PyObject* dummy, PyObject* shape)
} }
newdims[i] = shp_el; newdims[i] = shp_el;
total_elements *= newdims[i]; total_elements *= newdims[i];
} }
...@@ -1395,7 +1395,10 @@ CudaNdarray_setitem(PyObject *o, PyObject *key, PyObject *v) ...@@ -1395,7 +1395,10 @@ CudaNdarray_setitem(PyObject *o, PyObject *key, PyObject *v)
assert (CudaNdarray_EqualAndIgnore(viewCopyForComparison, rval, 1, 1)); assert (CudaNdarray_EqualAndIgnore(viewCopyForComparison, rval, 1, 1));
assert (rval->base == baseSavedForComparison); assert (rval->base == baseSavedForComparison);
assert (rval->dev_structure_fresh); assert (rval->dev_structure_fresh);
// Clean up locally-created references
Py_DECREF((PyObject*)viewCopyForComparison); Py_DECREF((PyObject*)viewCopyForComparison);
Py_DECREF(rval);
return 0; return 0;
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论