Skip to content

Commit f2431b3

Browse files
committed
Add PyTuple_Pack2
1 parent 8f25cc9 commit f2431b3

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

Include/tupleobject.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ PyAPI_FUNC(PyObject *) PyTuple_GetItem(PyObject *, Py_ssize_t);
3333
PyAPI_FUNC(int) PyTuple_SetItem(PyObject *, Py_ssize_t, PyObject *);
3434
PyAPI_FUNC(PyObject *) PyTuple_GetSlice(PyObject *, Py_ssize_t, Py_ssize_t);
3535
PyAPI_FUNC(PyObject *) PyTuple_Pack(Py_ssize_t, ...);
36+
PyAPI_FUNC(PyObject*) PyTuple_Pack2(PyObject* a, PyObject* b);
3637

3738
#ifndef Py_LIMITED_API
3839
# define Py_CPYTHON_TUPLEOBJECT_H

Modules/itertoolsmodule.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ pairwise_next(pairwiseobject *po)
356356
return NULL;
357357
}
358358
/* Future optimization: Reuse the result tuple as we do in enumerate() */
359-
result = PyTuple_Pack(2, old, new);
359+
result = PyTuple_Pack2(old, new);
360360
Py_XSETREF(po->old, new);
361361
Py_DECREF(old);
362362
return result;

Objects/tupleobject.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,21 @@ _PyTuple_MaybeUntrack(PyObject *op)
151151
_PyObject_GC_UNTRACK(op);
152152
}
153153

154+
PyObject*
155+
PyTuple_Pack2(PyObject *a, PyObject *b)
156+
{
157+
assert(a!=NULL);
158+
assert(b != NULL);
159+
PyTupleObject* result = tuple_alloc(2);
160+
if (result == NULL) {
161+
return NULL;
162+
}
163+
result->ob_item[0] = Py_NewRef(a);
164+
result->ob_item[1] = Py_NewRef(b);
165+
_PyObject_GC_TRACK(result);
166+
return (PyObject*)result;
167+
}
168+
154169
PyObject *
155170
PyTuple_Pack(Py_ssize_t n, ...)
156171
{

0 commit comments

Comments
 (0)