Skip to content

Commit 7cbe6ca

Browse files
bpo-44114: Fix dictkeys_reversed and dictvalues_reversed function signatures (GH-26062)
These are passed and called as PyCFunction, however they are defined here without the (ignored) args parameter. This works fine in some C compilers, but fails in webassembly or anything else that has strict function pointer call type checking. (cherry picked from commit ab383eb) Co-authored-by: Joe Marshall <joe.marshall@nottingham.ac.uk>
1 parent 6275ea0 commit 7cbe6ca

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix incorrect dictkeys_reversed and dictitems_reversed function signatures in C code, which broke webassembly builds.

Objects/dictobject.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4826,7 +4826,7 @@ static PySequenceMethods dictitems_as_sequence = {
48264826
(objobjproc)dictitems_contains, /* sq_contains */
48274827
};
48284828

4829-
static PyObject* dictitems_reversed(_PyDictViewObject *dv);
4829+
static PyObject* dictitems_reversed(_PyDictViewObject *dv, PyObject *Py_UNUSED(ignored));
48304830

48314831
PyDoc_STRVAR(reversed_items_doc,
48324832
"Return a reverse iterator over the dict items.");
@@ -4879,7 +4879,7 @@ dictitems_new(PyObject *dict, PyObject *Py_UNUSED(ignored))
48794879
}
48804880

48814881
static PyObject *
4882-
dictitems_reversed(_PyDictViewObject *dv)
4882+
dictitems_reversed(_PyDictViewObject *dv, PyObject *Py_UNUSED(ignored))
48834883
{
48844884
if (dv->dv_dict == NULL) {
48854885
Py_RETURN_NONE;
@@ -4909,7 +4909,7 @@ static PySequenceMethods dictvalues_as_sequence = {
49094909
(objobjproc)0, /* sq_contains */
49104910
};
49114911

4912-
static PyObject* dictvalues_reversed(_PyDictViewObject *dv);
4912+
static PyObject* dictvalues_reversed(_PyDictViewObject *dv, PyObject *Py_UNUSED(ignored));
49134913

49144914
PyDoc_STRVAR(reversed_values_doc,
49154915
"Return a reverse iterator over the dict values.");
@@ -4960,7 +4960,7 @@ dictvalues_new(PyObject *dict, PyObject *Py_UNUSED(ignored))
49604960
}
49614961

49624962
static PyObject *
4963-
dictvalues_reversed(_PyDictViewObject *dv)
4963+
dictvalues_reversed(_PyDictViewObject *dv, PyObject *Py_UNUSED(ignored))
49644964
{
49654965
if (dv->dv_dict == NULL) {
49664966
Py_RETURN_NONE;

0 commit comments

Comments
 (0)