summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--numpy/core/src/multiarray/textreading/rows.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/numpy/core/src/multiarray/textreading/rows.c b/numpy/core/src/multiarray/textreading/rows.c
index e30ff835e..86c01d189 100644
--- a/numpy/core/src/multiarray/textreading/rows.c
+++ b/numpy/core/src/multiarray/textreading/rows.c
@@ -432,7 +432,12 @@ read_rows(stream *s,
}
tokenizer_clear(&ts);
- PyMem_FREE(conv_funcs);
+ if (conv_funcs != NULL) {
+ for (Py_ssize_t i = 0; i < actual_num_fields; i++) {
+ Py_XDECREF(conv_funcs[i]);
+ }
+ PyMem_FREE(conv_funcs);
+ }
if (data_array == NULL) {
assert(row_count == 0 && result_shape[0] == 0);
@@ -474,7 +479,12 @@ read_rows(stream *s,
return data_array;
error:
- PyMem_FREE(conv_funcs);
+ if (conv_funcs != NULL) {
+ for (Py_ssize_t i = 0; i < actual_num_fields; i++) {
+ Py_XDECREF(conv_funcs[i]);
+ }
+ PyMem_FREE(conv_funcs);
+ }
tokenizer_clear(&ts);
Py_XDECREF(data_array);
return NULL;