Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 563e754

Browse files
committed
Merge pull request #2966 from certik/backport2928
BUG: Fix memory leak in ndarray construction from strings (gh-2927)
2 parents 7177513 + 7f0f68f commit 563e754

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

numpy/core/src/multiarray/common.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -485,9 +485,11 @@ PyArray_DTypeFromObjectHelper(PyObject *obj, int maxdims,
485485
/* Set 'out_dtype' if it's NULL */
486486
if (*out_dtype == NULL) {
487487
if (!string_type && dtype->type_num == NPY_STRING) {
488+
Py_DECREF(dtype);
488489
return RETRY_WITH_STRING;
489490
}
490491
if (!string_type && dtype->type_num == NPY_UNICODE) {
492+
Py_DECREF(dtype);
491493
return RETRY_WITH_UNICODE;
492494
}
493495
*out_dtype = dtype;
@@ -500,17 +502,19 @@ PyArray_DTypeFromObjectHelper(PyObject *obj, int maxdims,
500502
if (res_dtype == NULL) {
501503
return -1;
502504
}
503-
Py_DECREF(*out_dtype);
504505
if (!string_type &&
505506
res_dtype->type_num == NPY_UNICODE &&
506507
(*out_dtype)->type_num != NPY_UNICODE) {
508+
Py_DECREF(res_dtype);
507509
return RETRY_WITH_UNICODE;
508510
}
509511
if (!string_type &&
510512
res_dtype->type_num == NPY_STRING &&
511513
(*out_dtype)->type_num != NPY_STRING) {
514+
Py_DECREF(res_dtype);
512515
return RETRY_WITH_STRING;
513516
}
517+
Py_DECREF(*out_dtype);
514518
*out_dtype = res_dtype;
515519
return 0;
516520
}

0 commit comments

Comments
 (0)