[3.12] gh-126303: Fix pickling and copying of os.sched_param objects (GH-126336) (GH-126424)

(cherry picked from commit d3840503b0)
This commit is contained in:
Serhiy Storchaka 2024-11-05 08:52:51 +02:00 committed by GitHub
parent 94423b6be1
commit 844d908adb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 41 additions and 0 deletions

View file

@ -24,6 +24,7 @@
#include "pycore_object.h" // _PyObject_LookupSpecial()
#include "pycore_pystate.h" // _PyInterpreterState_GET()
#include "pycore_signal.h" // Py_NSIG
#include "pycore_typeobject.h" // _PyType_AddMethod()
#ifdef MS_WINDOWS
# include <windows.h>
@ -7866,6 +7867,16 @@ os_sched_param_impl(PyTypeObject *type, PyObject *sched_priority)
return res;
}
static PyObject *
os_sched_param_reduce(PyObject *self, PyObject *Py_UNUSED(ignored))
{
return Py_BuildValue("(O(N))", Py_TYPE(self), PyStructSequence_GetItem(self, 0));
}
static PyMethodDef os_sched_param_reduce_method = {
"__reduce__", (PyCFunction)os_sched_param_reduce, METH_NOARGS|METH_COEXIST, NULL,
};
PyDoc_VAR(os_sched_param__doc__);
static PyStructSequence_Field sched_param_fields[] = {
@ -17001,6 +17012,12 @@ posixmodule_exec(PyObject *m)
return -1;
}
((PyTypeObject *)state->SchedParamType)->tp_new = os_sched_param;
if (_PyType_AddMethod((PyTypeObject *)state->SchedParamType,
&os_sched_param_reduce_method) < 0)
{
return -1;
}
PyType_Modified((PyTypeObject *)state->SchedParamType);
#endif
/* initialize TerminalSize_info */