Skip to content

Commit cc6fd05

Browse files
Use _PyTuple_FromPair in exceptions.c
1 parent 61f2a1a commit cc6fd05

File tree

1 file changed

+10
-12
lines changed

1 file changed

+10
-12
lines changed

Objects/exceptions.c

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "pycore_modsupport.h" // _PyArg_NoKeywords()
1414
#include "pycore_object.h"
1515
#include "pycore_pyerrors.h" // struct _PyErr_SetRaisedException
16+
#include "pycore_tuple.h" // _PyTuple_FromPair
1617

1718
#include "osdefs.h" // SEP
1819
#include "clinic/exceptions.c.h"
@@ -214,7 +215,7 @@ BaseException___reduce___impl(PyBaseExceptionObject *self)
214215
if (self->args && self->dict)
215216
return PyTuple_Pack(3, Py_TYPE(self), self->args, self->dict);
216217
else
217-
return PyTuple_Pack(2, Py_TYPE(self), self->args);
218+
return _PyTuple_FromPair((PyObject *)Py_TYPE(self), self->args);
218219
}
219220

220221
/*
@@ -1008,8 +1009,7 @@ _PyExc_CreateExceptionGroup(const char *msg_str, PyObject *excs)
10081009
if (!msg) {
10091010
return NULL;
10101011
}
1011-
PyObject *args = PyTuple_Pack(2, msg, excs);
1012-
Py_DECREF(msg);
1012+
PyObject *args = _PyTuple_FromPairSteal(msg, Py_NewRef(excs));
10131013
if (!args) {
10141014
return NULL;
10151015
}
@@ -1132,7 +1132,7 @@ BaseExceptionGroup_derive_impl(PyBaseExceptionGroupObject *self,
11321132
PyObject *excs)
11331133
/*[clinic end generated code: output=4307564218dfbf06 input=f72009d38e98cec1]*/
11341134
{
1135-
PyObject *init_args = PyTuple_Pack(2, self->msg, excs);
1135+
PyObject *init_args = _PyTuple_FromPair(self->msg, excs);
11361136
if (!init_args) {
11371137
return NULL;
11381138
}
@@ -1449,13 +1449,11 @@ BaseExceptionGroup_split_impl(PyBaseExceptionGroupObject *self,
14491449
return NULL;
14501450
}
14511451

1452-
PyObject *result = PyTuple_Pack(
1453-
2,
1452+
assert(_Py_IsStaticImmortal(Py_None));
1453+
PyObject *result = _PyTuple_FromPairSteal(
14541454
split_result.match ? split_result.match : Py_None,
14551455
split_result.rest ? split_result.rest : Py_None);
14561456

1457-
Py_XDECREF(split_result.match);
1458-
Py_XDECREF(split_result.rest);
14591457
return result;
14601458
}
14611459

@@ -1764,8 +1762,8 @@ static PyObject*
17641762
create_exception_group_class(void) {
17651763
struct _Py_exc_state *state = get_exc_state();
17661764

1767-
PyObject *bases = PyTuple_Pack(
1768-
2, PyExc_BaseExceptionGroup, PyExc_Exception);
1765+
PyObject *bases = _PyTuple_FromPair(
1766+
PyExc_BaseExceptionGroup, PyExc_Exception);
17691767
if (bases == NULL) {
17701768
return NULL;
17711769
}
@@ -1913,7 +1911,7 @@ ImportError_reduce(PyObject *self, PyObject *Py_UNUSED(ignored))
19131911
return NULL;
19141912
PyBaseExceptionObject *exc = PyBaseExceptionObject_CAST(self);
19151913
if (state == Py_None)
1916-
res = PyTuple_Pack(2, Py_TYPE(self), exc->args);
1914+
res = _PyTuple_FromPair((PyObject *)Py_TYPE(self), exc->args);
19171915
else
19181916
res = PyTuple_Pack(3, Py_TYPE(self), exc->args, state);
19191917
Py_DECREF(state);
@@ -2421,7 +2419,7 @@ OSError_reduce(PyObject *op, PyObject *Py_UNUSED(ignored))
24212419
if (self->dict)
24222420
res = PyTuple_Pack(3, Py_TYPE(self), args, self->dict);
24232421
else
2424-
res = PyTuple_Pack(2, Py_TYPE(self), args);
2422+
res = _PyTuple_FromPair((PyObject *)Py_TYPE(self), args);
24252423
Py_DECREF(args);
24262424
return res;
24272425
}

0 commit comments

Comments
 (0)