https://github.com/python/cpython/commit/33bb297b4362f8908b78e72778cc58f55bfcd733
commit: 33bb297b4362f8908b78e72778cc58f55bfcd733
branch: 3.15
author: Stan Ulbrych <[email protected]>
committer: StanFromIreland <[email protected]>
date: 2026-10-26T19:49:41Z
summary:
[3.15] Fix ignored error returns in `sys` initialization, `_ctypes` and
`_interpchannels` (GH-160614) (#160711)
(cherry picked from commit c5d09789ea28f34b9f150a4d033945e0eccaeabf)
files:
M Modules/_ctypes/_ctypes.c
M Modules/_interpchannelsmodule.c
M Python/pylifecycle.c
diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c
index 3d932b3ee5736ff..e50b1257d343405 100644
--- a/Modules/_ctypes/_ctypes.c
+++ b/Modules/_ctypes/_ctypes.c
@@ -2497,22 +2497,30 @@ PyCSimpleType_init(PyObject *self, PyObject *args,
PyObject *kwds)
}
assert(sw_info);
#ifdef WORDS_BIGENDIAN
- PyObject_SetAttrString(self, "__ctype_le__", swapped);
- PyObject_SetAttrString(self, "__ctype_be__", self);
- PyObject_SetAttrString(swapped, "__ctype_be__", self);
- PyObject_SetAttrString(swapped, "__ctype_le__", swapped);
+ if (PyObject_SetAttrString(self, "__ctype_le__", swapped) < 0 ||
+ PyObject_SetAttrString(self, "__ctype_be__", self) < 0 ||
+ PyObject_SetAttrString(swapped, "__ctype_be__", self) < 0 ||
+ PyObject_SetAttrString(swapped, "__ctype_le__", swapped) < 0)
+ {
+ Py_DECREF(swapped);
+ return -1;
+ }
/* We are creating the type for the OTHER endian */
sw_info->format = _ctypes_alloc_format_string("<", stginfo->format+1);
#else
- PyObject_SetAttrString(self, "__ctype_be__", swapped);
- PyObject_SetAttrString(self, "__ctype_le__", self);
- PyObject_SetAttrString(swapped, "__ctype_le__", self);
- PyObject_SetAttrString(swapped, "__ctype_be__", swapped);
+ if (PyObject_SetAttrString(self, "__ctype_be__", swapped) < 0 ||
+ PyObject_SetAttrString(self, "__ctype_le__", self) < 0 ||
+ PyObject_SetAttrString(swapped, "__ctype_le__", self) < 0 ||
+ PyObject_SetAttrString(swapped, "__ctype_be__", swapped) < 0)
+ {
+ Py_DECREF(swapped);
+ return -1;
+ }
/* We are creating the type for the OTHER endian */
sw_info->format = _ctypes_alloc_format_string(">", stginfo->format+1);
#endif
Py_DECREF(swapped);
- if (PyErr_Occurred()) {
+ if (sw_info->format == NULL) {
return -1;
}
};
diff --git a/Modules/_interpchannelsmodule.c b/Modules/_interpchannelsmodule.c
index 18f892406d10b99..930d7276a3ed45e 100644
--- a/Modules/_interpchannelsmodule.c
+++ b/Modules/_interpchannelsmodule.c
@@ -2638,7 +2638,7 @@ _channelid_shared(PyThreadState *tstate, PyObject *obj,
_PyXIData_t *data)
if (st == NULL) {
return -1;
}
- if (!PyObject_IsInstance(obj, (PyObject *)st->ChannelIDType)) {
+ if (!PyObject_TypeCheck(obj, st->ChannelIDType)) {
PyErr_Format(PyExc_TypeError,
"'_id' attribute must be an %N object, not %T",
st->ChannelIDType, obj);
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index 516d467141ade75..c28a28e3bdad170 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -3183,8 +3183,14 @@ init_sys_streams(PyThreadState *tstate)
config->stdio_errors);
if (std == NULL)
goto error;
- PySys_SetObject("__stdin__", std);
- _PySys_SetAttr(&_Py_ID(stdin), std);
+ if (PySys_SetObject("__stdin__", std) < 0) {
+ Py_DECREF(std);
+ goto error;
+ }
+ if (_PySys_SetAttr(&_Py_ID(stdin), std) < 0) {
+ Py_DECREF(std);
+ goto error;
+ }
Py_DECREF(std);
/* Set sys.stdout */
@@ -3194,8 +3200,14 @@ init_sys_streams(PyThreadState *tstate)
config->stdio_errors);
if (std == NULL)
goto error;
- PySys_SetObject("__stdout__", std);
- _PySys_SetAttr(&_Py_ID(stdout), std);
+ if (PySys_SetObject("__stdout__", std) < 0) {
+ Py_DECREF(std);
+ goto error;
+ }
+ if (_PySys_SetAttr(&_Py_ID(stdout), std) < 0) {
+ Py_DECREF(std);
+ goto error;
+ }
Py_DECREF(std);
#if 1 /* Disable this if you have trouble debugging bootstrap stuff */
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]