8000 ENH: acquire the allocator lock when setting the array_owned flag · r-devulap/numpy@aed1f5b · GitHub
[go: up one dir, main page]

Skip to content

Commit aed1f5b

Browse files
committed
ENH: acquire the allocator lock when setting the array_owned flag
1 parent 9642714 commit aed1f5b

File tree

1 file changed

+5
-0
lines changed
  • numpy/_core/src/multiarray/stringdtype

1 file changed

+5
-0
lines changed

numpy/_core/src/multiarray/stringdtype/dtype.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -633,11 +633,16 @@ PyArray_Descr *
633633
stringdtype_finalize_descr(PyArray_Descr *dtype)
634634
{
635635
PyArray_StringDTypeObject *sdtype = (PyArray_StringDTypeObject *)dtype;
636+
// acquire the allocator lock in case the descriptor we want to finalize
637+
// is shared between threads, see gh-28813
638+
npy_string_allocator *allocator = NpyString_acquire_allocator(sdtype);
636639
if (sdtype->array_owned == 0) {
637640
sdtype->array_owned = 1;
641+
NpyString_release_allocator(allocator);
638642
Py_INCREF(dtype);
639643
return dtype;
640644
}
645+
NpyString_release_allocator(allocator);
641646
PyArray_StringDTypeObject *ret = (PyArray_StringDTypeObject *)new_stringdtype_instance(
642647
sdtype->na_object, sdtype->coerce);
643648
ret->array_owned = 1;

0 commit comments

Comments
 (0)
0