|
13 | 13 | #include "pycore_modsupport.h" // _PyArg_NoKeywords() |
14 | 14 | #include "pycore_object.h" |
15 | 15 | #include "pycore_pyerrors.h" // struct _PyErr_SetRaisedException |
| 16 | +#include "pycore_tuple.h" // _PyTuple_FromPair |
16 | 17 |
|
17 | 18 | #include "osdefs.h" // SEP |
18 | 19 | #include "clinic/exceptions.c.h" |
@@ -214,7 +215,7 @@ BaseException___reduce___impl(PyBaseExceptionObject *self) |
214 | 215 | if (self->args && self->dict) |
215 | 216 | return PyTuple_Pack(3, Py_TYPE(self), self->args, self->dict); |
216 | 217 | else |
217 | | - return PyTuple_Pack(2, Py_TYPE(self), self->args); |
| 218 | + return _PyTuple_FromPair((PyObject *)Py_TYPE(self), self->args); |
218 | 219 | } |
219 | 220 |
|
220 | 221 | /* |
@@ -1008,8 +1009,7 @@ _PyExc_CreateExceptionGroup(const char *msg_str, PyObject *excs) |
1008 | 1009 | if (!msg) { |
1009 | 1010 | return NULL; |
1010 | 1011 | } |
1011 | | - PyObject *args = PyTuple_Pack(2, msg, excs); |
1012 | | - Py_DECREF(msg); |
| 1012 | + PyObject *args = _PyTuple_FromPairSteal(msg, Py_NewRef(excs)); |
1013 | 1013 | if (!args) { |
1014 | 1014 | return NULL; |
1015 | 1015 | } |
@@ -1132,7 +1132,7 @@ BaseExceptionGroup_derive_impl(PyBaseExceptionGroupObject *self, |
1132 | 1132 | PyObject *excs) |
1133 | 1133 | /*[clinic end generated code: output=4307564218dfbf06 input=f72009d38e98cec1]*/ |
1134 | 1134 | { |
1135 | | - PyObject *init_args = PyTuple_Pack(2, self->msg, excs); |
| 1135 | + PyObject *init_args = _PyTuple_FromPair(self->msg, excs); |
1136 | 1136 | if (!init_args) { |
1137 | 1137 | return NULL; |
1138 | 1138 | } |
@@ -1449,13 +1449,11 @@ BaseExceptionGroup_split_impl(PyBaseExceptionGroupObject *self, |
1449 | 1449 | return NULL; |
1450 | 1450 | } |
1451 | 1451 |
|
1452 | | - PyObject *result = PyTuple_Pack( |
1453 | | - 2, |
| 1452 | + assert(_Py_IsStaticImmortal(Py_None)); |
| 1453 | + PyObject *result = _PyTuple_FromPairSteal( |
1454 | 1454 | split_result.match ? split_result.match : Py_None, |
1455 | 1455 | split_result.rest ? split_result.rest : Py_None); |
1456 | 1456 |
|
1457 | | - Py_XDECREF(split_result.match); |
1458 | | - Py_XDECREF(split_result.rest); |
1459 | 1457 | return result; |
1460 | 1458 | } |
1461 | 1459 |
|
@@ -1764,8 +1762,8 @@ static PyObject* |
1764 | 1762 | create_exception_group_class(void) { |
1765 | 1763 | struct _Py_exc_state *state = get_exc_state(); |
1766 | 1764 |
|
1767 | | - PyObject *bases = PyTuple_Pack( |
1768 | | - 2, PyExc_BaseExceptionGroup, PyExc_Exception); |
| 1765 | + PyObject *bases = _PyTuple_FromPair( |
| 1766 | + PyExc_BaseExceptionGroup, PyExc_Exception); |
1769 | 1767 | if (bases == NULL) { |
1770 | 1768 | return NULL; |
1771 | 1769 | } |
@@ -1913,7 +1911,7 @@ ImportError_reduce(PyObject *self, PyObject *Py_UNUSED(ignored)) |
1913 | 1911 | return NULL; |
1914 | 1912 | PyBaseExceptionObject *exc = PyBaseExceptionObject_CAST(self); |
1915 | 1913 | if (state == Py_None) |
1916 | | - res = PyTuple_Pack(2, Py_TYPE(self), exc->args); |
| 1914 | + res = _PyTuple_FromPair((PyObject *)Py_TYPE(self), exc->args); |
1917 | 1915 | else |
1918 | 1916 | res = PyTuple_Pack(3, Py_TYPE(self), exc->args, state); |
1919 | 1917 | Py_DECREF(state); |
@@ -2421,7 +2419,7 @@ OSError_reduce(PyObject *op, PyObject *Py_UNUSED(ignored)) |
2421 | 2419 | if (self->dict) |
2422 | 2420 | res = PyTuple_Pack(3, Py_TYPE(self), args, self->dict); |
2423 | 2421 | else |
2424 | | - res = PyTuple_Pack(2, Py_TYPE(self), args); |
| 2422 | + res = _PyTuple_FromPair((PyObject *)Py_TYPE(self), args); |
2425 | 2423 | Py_DECREF(args); |
2426 | 2424 | return res; |
2427 | 2425 | } |
|
0 commit comments