diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2016-11-22 05:58:08 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2016-11-22 05:58:08 (GMT) |
commit | 007d7ff73f4e6e65cfafd512f9c23f7b7119b803 (patch) | |
tree | 31bd8b875b309b4259ca9eceff5a6746b0d4b19a | |
parent | 9af740b99a19a85ad5f38379b6175cf4ead685ba (diff) | |
download | cpython-007d7ff73f4e6e65cfafd512f9c23f7b7119b803.zip cpython-007d7ff73f4e6e65cfafd512f9c23f7b7119b803.tar.gz cpython-007d7ff73f4e6e65cfafd512f9c23f7b7119b803.tar.bz2 |
Issue #28761: The fields name and doc of structures PyMemberDef, PyGetSetDef,
PyStructSequence_Field, PyStructSequence_Desc, and wrapperbase are now of
type "const char *" rather of "char *".
-rw-r--r-- | Doc/c-api/typeobj.rst | 10 | ||||
-rw-r--r-- | Doc/extending/newtypes.rst | 10 | ||||
-rw-r--r-- | Doc/whatsnew/3.7.rst | 6 | ||||
-rw-r--r-- | Include/descrobject.h | 8 | ||||
-rw-r--r-- | Include/structmember.h | 4 | ||||
-rw-r--r-- | Include/structseq.h | 8 | ||||
-rw-r--r-- | Misc/NEWS | 4 | ||||
-rw-r--r-- | Objects/structseq.c | 2 |
8 files changed, 31 insertions, 21 deletions
diff --git a/Doc/c-api/typeobj.rst b/Doc/c-api/typeobj.rst index 323f017..4a27d4b 100644 --- a/Doc/c-api/typeobj.rst +++ b/Doc/c-api/typeobj.rst @@ -725,11 +725,11 @@ type objects) *must* have the :attr:`ob_size` field. typedef int (*setter)(PyObject *, PyObject *, void *); typedef struct PyGetSetDef { - char *name; /* attribute name */ - getter get; /* C function to get the attribute */ - setter set; /* C function to set or delete the attribute */ - char *doc; /* optional doc string */ - void *closure; /* optional additional data for getter and setter */ + const char *name; /* attribute name */ + getter get; /* C function to get the attribute */ + setter set; /* C function to set or delete the attribute */ + const char *doc; /* optional doc string */ + void *closure; /* optional additional data for getter and setter */ } PyGetSetDef; diff --git a/Doc/extending/newtypes.rst b/Doc/extending/newtypes.rst index b8ce437..118f336 100644 --- a/Doc/extending/newtypes.rst +++ b/Doc/extending/newtypes.rst @@ -1138,11 +1138,11 @@ in the instance. A variety of primitive C types are supported, and access may be read-only or read-write. The structures in the table are defined as:: typedef struct PyMemberDef { - char *name; - int type; - int offset; - int flags; - char *doc; + const char *name; + int type; + int offset; + int flags; + const char *doc; } PyMemberDef; For each entry in the table, a :term:`descriptor` will be constructed and added to the diff --git a/Doc/whatsnew/3.7.rst b/Doc/whatsnew/3.7.rst index de0c364..0f6ebc4 100644 --- a/Doc/whatsnew/3.7.rst +++ b/Doc/whatsnew/3.7.rst @@ -99,6 +99,12 @@ Build and C API Changes of libffi is now required when building ``_ctypes`` on such platforms. Contributed by Zachary Ware in :issue:`27979`. +* The fields :c:member:`name` and :c:member:`doc` of structures + :c:type:`PyMemberDef`, :c:type:`PyGetSetDef`, + :c:type:`PyStructSequence_Field`, :c:type:`PyStructSequence_Desc`, + and :c:type:`wrapperbase` are now of type ``const char *`` rather of + ``char *``. (Contributed by Serhiy Storchaka in :issue:`28761`.) + Deprecated ========== diff --git a/Include/descrobject.h b/Include/descrobject.h index 8f3e84c..013d645 100644 --- a/Include/descrobject.h +++ b/Include/descrobject.h @@ -9,10 +9,10 @@ typedef PyObject *(*getter)(PyObject *, void *); typedef int (*setter)(PyObject *, PyObject *, void *); typedef struct PyGetSetDef { - char *name; + const char *name; getter get; setter set; - char *doc; + const char *doc; void *closure; } PyGetSetDef; @@ -24,11 +24,11 @@ typedef PyObject *(*wrapperfunc_kwds)(PyObject *self, PyObject *args, void *wrapped, PyObject *kwds); struct wrapperbase { - char *name; + const char *name; int offset; void *function; wrapperfunc wrapper; - char *doc; + const char *doc; int flags; PyObject *name_strobj; }; diff --git a/Include/structmember.h b/Include/structmember.h index 5da8a46..b54f708 100644 --- a/Include/structmember.h +++ b/Include/structmember.h @@ -16,11 +16,11 @@ extern "C" { pointer is NULL. */ typedef struct PyMemberDef { - char *name; + const char *name; int type; Py_ssize_t offset; int flags; - char *doc; + const char *doc; } PyMemberDef; /* Types */ diff --git a/Include/structseq.h b/Include/structseq.h index af22716..e5e5d5c 100644 --- a/Include/structseq.h +++ b/Include/structseq.h @@ -8,13 +8,13 @@ extern "C" { #endif typedef struct PyStructSequence_Field { - char *name; - char *doc; + const char *name; + const char *doc; } PyStructSequence_Field; typedef struct PyStructSequence_Desc { - char *name; - char *doc; + const char *name; + const char *doc; struct PyStructSequence_Field *fields; int n_in_sequence; } PyStructSequence_Desc; @@ -432,6 +432,10 @@ Windows C API ----- +- Issue #28761: The fields name and doc of structures PyMemberDef, PyGetSetDef, + PyStructSequence_Field, PyStructSequence_Desc, and wrapperbase are now of + type "const char *" rather of "char *". + - Issue #28748: Private variable _Py_PackageContext is now of type "const char *" rather of "char *". diff --git a/Objects/structseq.c b/Objects/structseq.c index 6f1782f..c2ece5a 100644 --- a/Objects/structseq.c +++ b/Objects/structseq.c @@ -256,7 +256,7 @@ structseq_reduce(PyStructSequence* self) } for (; i < n_fields; i++) { - char *n = Py_TYPE(self)->tp_members[i-n_unnamed_fields].name; + const char *n = Py_TYPE(self)->tp_members[i-n_unnamed_fields].name; if (PyDict_SetItemString(dict, n, self->ob_item[i]) < 0) goto error; } |