[Python-checkins] cpython: Issue #28761: The fields name and doc of structures PyMemberDef, PyGetSetDef,
serhiy.storchaka
python-checkins at python.org
Tue Nov 22 00:58:42 EST 2016
https://hg.python.org/cpython/rev/42b0ba372ec2
changeset: 105325:42b0ba372ec2
user: Serhiy Storchaka <storchaka at gmail.com>
date: Tue Nov 22 07:58:08 2016 +0200
summary:
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 *".
files:
Doc/c-api/typeobj.rst | 10 +++++-----
Doc/extending/newtypes.rst | 10 +++++-----
Doc/whatsnew/3.7.rst | 6 ++++++
Include/descrobject.h | 8 ++++----
Include/structmember.h | 4 ++--
Include/structseq.h | 8 ++++----
Misc/NEWS | 4 ++++
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
--- a/Doc/c-api/typeobj.rst
+++ b/Doc/c-api/typeobj.rst
@@ -725,11 +725,11 @@
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
--- a/Doc/extending/newtypes.rst
+++ b/Doc/extending/newtypes.rst
@@ -1138,11 +1138,11 @@
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
--- a/Doc/whatsnew/3.7.rst
+++ b/Doc/whatsnew/3.7.rst
@@ -99,6 +99,12 @@
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
--- a/Include/descrobject.h
+++ b/Include/descrobject.h
@@ -9,10 +9,10 @@
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 @@
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
--- a/Include/structmember.h
+++ b/Include/structmember.h
@@ -16,11 +16,11 @@
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
--- a/Include/structseq.h
+++ b/Include/structseq.h
@@ -8,13 +8,13 @@
#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;
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -432,6 +432,10 @@
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
--- a/Objects/structseq.c
+++ b/Objects/structseq.c
@@ -256,7 +256,7 @@
}
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;
}
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list