mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
gh-112358: Fix Python 3.12 regression with subclassing struct.Struct. (#112424)
Revert commit c8c0afc713
(PR #94532),
which moved `struct.Struct` initialisation from `Struct.__init__` to `Struct.__new__`.
This caused issues with code in the wild that subclasses `struct.Struct`.
This commit is contained in:
parent
3faf8e586d
commit
9fe60340d7
4 changed files with 52 additions and 48 deletions
16
Modules/clinic/_struct.c.h
generated
16
Modules/clinic/_struct.c.h
generated
|
@ -9,7 +9,7 @@ preserve
|
|||
#include "pycore_abstract.h" // _PyNumber_Index()
|
||||
#include "pycore_modsupport.h" // _PyArg_UnpackKeywords()
|
||||
|
||||
PyDoc_STRVAR(Struct__doc__,
|
||||
PyDoc_STRVAR(Struct___init____doc__,
|
||||
"Struct(format)\n"
|
||||
"--\n"
|
||||
"\n"
|
||||
|
@ -20,13 +20,13 @@ PyDoc_STRVAR(Struct__doc__,
|
|||
"\n"
|
||||
"See help(struct) for more on format strings.");
|
||||
|
||||
static PyObject *
|
||||
Struct_impl(PyTypeObject *type, PyObject *format);
|
||||
static int
|
||||
Struct___init___impl(PyStructObject *self, PyObject *format);
|
||||
|
||||
static PyObject *
|
||||
Struct(PyTypeObject *type, PyObject *args, PyObject *kwargs)
|
||||
static int
|
||||
Struct___init__(PyObject *self, PyObject *args, PyObject *kwargs)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
int return_value = -1;
|
||||
#if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
|
||||
|
||||
#define NUM_KEYWORDS 1
|
||||
|
@ -62,7 +62,7 @@ Struct(PyTypeObject *type, PyObject *args, PyObject *kwargs)
|
|||
goto exit;
|
||||
}
|
||||
format = fastargs[0];
|
||||
return_value = Struct_impl(type, format);
|
||||
return_value = Struct___init___impl((PyStructObject *)self, format);
|
||||
|
||||
exit:
|
||||
return return_value;
|
||||
|
@ -436,4 +436,4 @@ exit:
|
|||
|
||||
return return_value;
|
||||
}
|
||||
/*[clinic end generated code: output=6a20e87f9b298b14 input=a9049054013a1b77]*/
|
||||
/*[clinic end generated code: output=67bd299e5d72fee0 input=a9049054013a1b77]*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue