summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wiebe <mwiebe@enthought.com>2011-07-29 16:10:25 -0500
committerCharles Harris <charlesr.harris@gmail.com>2011-08-27 07:26:48 -0600
commit9bc5528f007445f5d57e2518e39209f6f6c9a5fe (patch)
tree18b1ece062385bd8ce881f801939f62ed6610c5d
parent6e99d50c75041a7432da95163d20dc879bb03e80 (diff)
downloadnumpy-9bc5528f007445f5d57e2518e39209f6f6c9a5fe.tar.gz
BUG: missingdata: Add deallocation of the NA mask
-rw-r--r--numpy/core/src/multiarray/arrayobject.c8
-rw-r--r--numpy/core/src/multiarray/na_mask.c1
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);