File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,9 @@ heapreplace_internal(PyObject *heap, PyObject *item, int siftup_func(PyListObjec
210210
}
211211

212212
returnitem = PyList_GET_ITEM(heap, 0);
213-
PyList_SET_ITEM(heap, 0, Py_NewRef(item));
214-
if (siftup_func((PyListObject *)heap, 0)) {
213+
PyListObject *list = _PyList_CAST(heap);
214+
FT_ATOMIC_STORE_PTR_RELAXED(list->ob_item[0], Py_NewRef(item));
215+
if (siftup_func(list, 0)) {
215216
Py_DECREF(returnitem);
216217
return NULL;
217218
}
@@ -286,8 +287,9 @@ _heapq_heappushpop_impl(PyObject *module, PyObject *heap, PyObject *item)
286287
}
287288

288289
returnitem = PyList_GET_ITEM(heap, 0);
289-
PyList_SET_ITEM(heap, 0, Py_NewRef(item));
290-
if (siftup((PyListObject *)heap, 0)) {
290+
PyListObject *list = _PyList_CAST(heap);
291+
FT_ATOMIC_STORE_PTR_RELAXED(list->ob_item[0], Py_NewRef(item));
292+
if (siftup(list, 0)) {
291293
Py_DECREF(returnitem);
292294
return NULL;
293295
}

0 commit comments

Comments
 (0)