aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Objects/tupleobject.c
diff options
context:
space:
mode:
authorMark Shannon <mark@hotpy.org>2025-01-22 10:51:37 +0000
committerGitHub <noreply@github.com>2025-01-22 10:51:37 +0000
commit470a0a68ebbbb4254f1a3e8e22cce0c3a0827055 (patch)
tree27f602ce33d9c7701db07ad64fb0342c8f49a65a /Objects/tupleobject.c
parenta65f802692bd04e1ad18e467d4ccb033b049c2a7 (diff)
downloadcpython-470a0a68ebbbb4254f1a3e8e22cce0c3a0827055.tar.gz
cpython-470a0a68ebbbb4254f1a3e8e22cce0c3a0827055.zip
GH-128682: Change a couple of functions to only steal references on success. (GH-129132)
Change PyTuple_FromStackRefSteal and PyList_FromStackRefSteal to only steal on success to avoid escaping
Diffstat (limited to 'Objects/tupleobject.c')
-rw-r--r--Objects/tupleobject.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c
index 002002eb455..7fe8553030a 100644
--- a/Objects/tupleobject.c
+++ b/Objects/tupleobject.c
@@ -391,16 +391,13 @@ _PyTuple_FromArray(PyObject *const *src, Py_ssize_t n)
}
PyObject *
-_PyTuple_FromStackRefSteal(const _PyStackRef *src, Py_ssize_t n)
+_PyTuple_FromStackRefStealOnSuccess(const _PyStackRef *src, Py_ssize_t n)
{
if (n == 0) {
return tuple_get_empty();
}
PyTupleObject *tuple = tuple_alloc(n);
if (tuple == NULL) {
- for (Py_ssize_t i = 0; i < n; i++) {
- PyStackRef_CLOSE(src[i]);
- }
return NULL;
}
PyObject **dst = tuple->ob_item;