mirror of
https://github.com/python/cpython.git
synced 2025-08-24 18:55:00 +00:00
bpo-33818: PyExceptionClass_Name() will now return "const char *". (GH-7581)
This commit is contained in:
parent
08f127a3ca
commit
ceeef10cdb
6 changed files with 14 additions and 9 deletions
|
@ -115,9 +115,13 @@ Optimizations
|
||||||
first introduced in Python 3.4. It offers better performance and smaller
|
first introduced in Python 3.4. It offers better performance and smaller
|
||||||
size compared to Protocol 3 available since Python 3.0.
|
size compared to Protocol 3 available since Python 3.0.
|
||||||
|
|
||||||
|
|
||||||
Build and C API Changes
|
Build and C API Changes
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
|
* The result of :c:func:`PyExceptionClass_Name` is now of type
|
||||||
|
``const char *`` rather of ``char *``.
|
||||||
|
(Contributed by Serhiy Storchaka in :issue:`33818`.)
|
||||||
|
|
||||||
|
|
||||||
Deprecated
|
Deprecated
|
||||||
|
|
|
@ -140,10 +140,9 @@ PyAPI_FUNC(void) _PyErr_ChainExceptions(PyObject *, PyObject *, PyObject *);
|
||||||
#define PyExceptionInstance_Check(x) \
|
#define PyExceptionInstance_Check(x) \
|
||||||
PyType_FastSubclass((x)->ob_type, Py_TPFLAGS_BASE_EXC_SUBCLASS)
|
PyType_FastSubclass((x)->ob_type, Py_TPFLAGS_BASE_EXC_SUBCLASS)
|
||||||
|
|
||||||
PyAPI_FUNC(char *) PyExceptionClass_Name(PyObject *);
|
PyAPI_FUNC(const char *) PyExceptionClass_Name(PyObject *);
|
||||||
#ifndef Py_LIMITED_API
|
#ifndef Py_LIMITED_API
|
||||||
#define PyExceptionClass_Name(x) \
|
#define PyExceptionClass_Name(x) (((PyTypeObject*)(x))->tp_name)
|
||||||
((char *)(((PyTypeObject *)(x))->tp_name))
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define PyExceptionInstance_Class(x) ((PyObject*)((x)->ob_type))
|
#define PyExceptionInstance_Class(x) ((PyObject*)((x)->ob_type))
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
:c:func:`PyExceptionClass_Name` will now return ``const char *`` instead of
|
||||||
|
``char *``.
|
|
@ -344,10 +344,10 @@ PyException_SetContext(PyObject *self, PyObject *context)
|
||||||
|
|
||||||
#undef PyExceptionClass_Name
|
#undef PyExceptionClass_Name
|
||||||
|
|
||||||
char *
|
const char *
|
||||||
PyExceptionClass_Name(PyObject *ob)
|
PyExceptionClass_Name(PyObject *ob)
|
||||||
{
|
{
|
||||||
return (char *)((PyTypeObject*)ob)->tp_name;
|
return ((PyTypeObject*)ob)->tp_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct PyMemberDef BaseException_members[] = {
|
static struct PyMemberDef BaseException_members[] = {
|
||||||
|
|
|
@ -947,7 +947,7 @@ PyErr_WriteUnraisable(PyObject *obj)
|
||||||
_Py_IDENTIFIER(__module__);
|
_Py_IDENTIFIER(__module__);
|
||||||
PyObject *f, *t, *v, *tb;
|
PyObject *f, *t, *v, *tb;
|
||||||
PyObject *moduleName = NULL;
|
PyObject *moduleName = NULL;
|
||||||
char* className;
|
const char *className;
|
||||||
|
|
||||||
PyErr_Fetch(&t, &v, &tb);
|
PyErr_Fetch(&t, &v, &tb);
|
||||||
|
|
||||||
|
@ -977,7 +977,7 @@ PyErr_WriteUnraisable(PyObject *obj)
|
||||||
assert(PyExceptionClass_Check(t));
|
assert(PyExceptionClass_Check(t));
|
||||||
className = PyExceptionClass_Name(t);
|
className = PyExceptionClass_Name(t);
|
||||||
if (className != NULL) {
|
if (className != NULL) {
|
||||||
char *dot = strrchr(className, '.');
|
const char *dot = strrchr(className, '.');
|
||||||
if (dot != NULL)
|
if (dot != NULL)
|
||||||
className = dot+1;
|
className = dot+1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -774,12 +774,12 @@ print_exception(PyObject *f, PyObject *value)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
PyObject* moduleName;
|
PyObject* moduleName;
|
||||||
char* className;
|
const char *className;
|
||||||
_Py_IDENTIFIER(__module__);
|
_Py_IDENTIFIER(__module__);
|
||||||
assert(PyExceptionClass_Check(type));
|
assert(PyExceptionClass_Check(type));
|
||||||
className = PyExceptionClass_Name(type);
|
className = PyExceptionClass_Name(type);
|
||||||
if (className != NULL) {
|
if (className != NULL) {
|
||||||
char *dot = strrchr(className, '.');
|
const char *dot = strrchr(className, '.');
|
||||||
if (dot != NULL)
|
if (dot != NULL)
|
||||||
className = dot+1;
|
className = dot+1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue