Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Lib/test/test__interpreters.py
Original file line number Diff line number Diff line change
Expand Up @@ -485,6 +485,10 @@ def test_signatures(self):
msg = r'_interpreters.run_func\(\) argument 3 must be dict, not int'
with self.assertRaisesRegex(TypeError, msg):
_interpreters.run_func(self.id, lambda: None, shared=1)
# See https://github.com/python/cpython/issues/135855
msg = r'_interpreters.set___main___attrs\(\) argument 2 must be dict, not int'
with self.assertRaisesRegex(TypeError, msg):
_interpreters.set___main___attrs(self.id, 1)

def test_invalid_shared_encoding(self):
# See https://github.com/python/cpython/issues/127196
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Raise :exc:`TypeError` instead of :exc:`SystemError` when
:func:`!_interpreters.set___main___attrs` is passed a non-dict object.
Patch by Brian Schubert.
8 changes: 4 additions & 4 deletions Modules/_interpretersmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -1039,8 +1039,8 @@ interp_set___main___attrs(PyObject *self, PyObject *args, PyObject *kwargs)
PyObject *id, *updates;
int restricted = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
"OO|$p:" MODULE_NAME_STR ".set___main___attrs",
kwlist, &id, &updates, &restricted))
"OO!|$p:" MODULE_NAME_STR ".set___main___attrs",
kwlist, &id, &PyDict_Type, &updates, &restricted))
{
return NULL;
}
Expand All @@ -1055,13 +1055,13 @@ interp_set___main___attrs(PyObject *self, PyObject *args, PyObject *kwargs)

// Check the updates.
if (updates != Py_None) {
Py_ssize_t size = PyObject_Size(updates);
Py_ssize_t size = PyDict_Size(updates);
if (size < 0) {
return NULL;
}
if (size == 0) {
PyErr_SetString(PyExc_ValueError,
"arg 2 must be a non-empty mapping");
"arg 2 must be a non-empty dict");
return NULL;
}
}
Expand Down
Loading