diff options
author | Mark Wiebe <mwwiebe@gmail.com> | 2013-01-17 10:49:33 -0800 |
---|---|---|
committer | Mark Wiebe <mwwiebe@gmail.com> | 2013-01-17 10:59:24 -0800 |
commit | 1539b711871ae8b949da90eabc18d7fc3a4d1170 (patch) | |
tree | 9cbda2c6e009dbf8774b9df719b304a39b956b38 /numpy | |
parent | 27690e33fa2202ecb1bca338ff38320de84b27ea (diff) | |
download | numpy-1539b711871ae8b949da90eabc18d7fc3a4d1170.tar.gz |
BUG: Fix memory leak in ndarray construction from strings (gh-2927)
Diffstat (limited to 'numpy')
-rw-r--r-- | numpy/core/src/multiarray/common.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/numpy/core/src/multiarray/common.c b/numpy/core/src/multiarray/common.c index 64ca352a5..f27de491f 100644 --- a/numpy/core/src/multiarray/common.c +++ b/numpy/core/src/multiarray/common.c @@ -485,9 +485,11 @@ promote_types: /* Set 'out_dtype' if it's NULL */ if (*out_dtype == NULL) { if (!string_type && dtype->type_num == NPY_STRING) { + Py_DECREF(dtype); return RETRY_WITH_STRING; } if (!string_type && dtype->type_num == NPY_UNICODE) { + Py_DECREF(dtype); return RETRY_WITH_UNICODE; } *out_dtype = dtype; @@ -500,17 +502,19 @@ promote_types: if (res_dtype == NULL) { return -1; } - Py_DECREF(*out_dtype); if (!string_type && res_dtype->type_num == NPY_UNICODE && (*out_dtype)->type_num != NPY_UNICODE) { + Py_DECREF(res_dtype); return RETRY_WITH_UNICODE; } if (!string_type && res_dtype->type_num == NPY_STRING && (*out_dtype)->type_num != NPY_STRING) { + Py_DECREF(res_dtype); return RETRY_WITH_STRING; } + Py_DECREF(*out_dtype); *out_dtype = res_dtype; return 0; } |