diff options
-rw-r--r-- | numpy/core/src/multiarray/arrayobject.c | 8 | ||||
-rw-r--r-- | numpy/core/src/multiarray/na_mask.c | 1 |
2 files changed, 8 insertions, 1 deletions
diff --git a/numpy/core/src/multiarray/arrayobject.c b/numpy/core/src/multiarray/arrayobject.c index 987826512..f510a3dbc 100644 --- a/numpy/core/src/multiarray/arrayobject.c +++ b/numpy/core/src/multiarray/arrayobject.c @@ -355,6 +355,14 @@ array_dealloc(PyArrayObject *self) PyDataMem_FREE(fa->data); } + /* If the array has an NA mask, free its associated data */ + if (fa->flags & NPY_ARRAY_MASKNA) { + Py_DECREF(fa->maskna_dtype); + if (fa->flags & NPY_ARRAY_OWNMASKNA) { + PyDataMem_FREE(fa->maskna_data); + } + } + PyDimMem_FREE(fa->dimensions); Py_DECREF(fa->descr); Py_TYPE(self)->tp_free((PyObject *)self); diff --git a/numpy/core/src/multiarray/na_mask.c b/numpy/core/src/multiarray/na_mask.c index b7af2c824..5c67250d7 100644 --- a/numpy/core/src/multiarray/na_mask.c +++ b/numpy/core/src/multiarray/na_mask.c @@ -215,7 +215,6 @@ PyArray_AllocateMaskNA(PyArrayObject *arr, npy_bool ownmaskna, npy_bool multina) } /* Set the NA mask data in the array */ - Py_XDECREF(maskna_dtype); fa->maskna_dtype = maskna_dtype; fa->maskna_data = maskna_data; fa->flags |= (NPY_ARRAY_MASKNA | NPY_ARRAY_OWNMASKNA); |