Skip to content

Commit

Permalink
bpo-44114: Fix dictkeys_reversed and dictvalues_reversed function sig…
Browse files Browse the repository at this point in the history
…natures (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.
  • Loading branch information
joemarshall authored May 13, 2021
1 parent b2f3f8e commit ab383eb
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix incorrect dictkeys_reversed and dictitems_reversed function signatures in C code, which broke webassembly builds.
8 changes: 4 additions & 4 deletions Objects/dictobject.c
Original file line number Diff line number Diff line change
Expand Up @@ -4826,7 +4826,7 @@ static PySequenceMethods dictitems_as_sequence = {
(objobjproc)dictitems_contains, /* sq_contains */
};

static PyObject* dictitems_reversed(_PyDictViewObject *dv);
static PyObject* dictitems_reversed(_PyDictViewObject *dv, PyObject *Py_UNUSED(ignored));

PyDoc_STRVAR(reversed_items_doc,
"Return a reverse iterator over the dict items.");
Expand Down Expand Up @@ -4879,7 +4879,7 @@ dictitems_new(PyObject *dict, PyObject *Py_UNUSED(ignored))
}

static PyObject *
dictitems_reversed(_PyDictViewObject *dv)
dictitems_reversed(_PyDictViewObject *dv, PyObject *Py_UNUSED(ignored))
{
if (dv->dv_dict == NULL) {
Py_RETURN_NONE;
Expand Down Expand Up @@ -4909,7 +4909,7 @@ static PySequenceMethods dictvalues_as_sequence = {
(objobjproc)0, /* sq_contains */
};

static PyObject* dictvalues_reversed(_PyDictViewObject *dv);
static PyObject* dictvalues_reversed(_PyDictViewObject *dv, PyObject *Py_UNUSED(ignored));

PyDoc_STRVAR(reversed_values_doc,
"Return a reverse iterator over the dict values.");
Expand Down Expand Up @@ -4960,7 +4960,7 @@ dictvalues_new(PyObject *dict, PyObject *Py_UNUSED(ignored))
}

static PyObject *
dictvalues_reversed(_PyDictViewObject *dv)
dictvalues_reversed(_PyDictViewObject *dv, PyObject *Py_UNUSED(ignored))
{
if (dv->dv_dict == NULL) {
Py_RETURN_NONE;
Expand Down

0 comments on commit ab383eb

Please sign in to comment.