Skip to content

Commit b0c712d

Browse files
vstinneradorilson
authored andcommitted
bpo-43268: Remove abusive usage of tstate in sysmodule.c (python#24581)
Remove explicit tstate usage in sysmodule.c when it's only used raise exceptions: get it implicitly using PyErr_XXX() functions.
1 parent 54eb259 commit b0c712d

File tree

1 file changed

+12
-18
lines changed

1 file changed

+12
-18
lines changed

Python/sysmodule.c

+12-18
Original file line numberDiff line numberDiff line change
@@ -838,8 +838,7 @@ sys_exit_impl(PyObject *module, PyObject *status)
838838
/*[clinic end generated code: output=13870986c1ab2ec0 input=b86ca9497baa94f2]*/
839839
{
840840
/* Raise SystemExit so callers may catch it or clean up. */
841-
PyThreadState *tstate = _PyThreadState_GET();
842-
_PyErr_SetObject(tstate, PyExc_SystemExit, status);
841+
PyErr_SetObject(PyExc_SystemExit, status);
843842
return NULL;
844843
}
845844

@@ -905,15 +904,14 @@ static PyObject *
905904
sys_intern_impl(PyObject *module, PyObject *s)
906905
/*[clinic end generated code: output=be680c24f5c9e5d6 input=849483c006924e2f]*/
907906
{
908-
PyThreadState *tstate = _PyThreadState_GET();
909907
if (PyUnicode_CheckExact(s)) {
910908
Py_INCREF(s);
911909
PyUnicode_InternInPlace(&s);
912910
return s;
913911
}
914912
else {
915-
_PyErr_Format(tstate, PyExc_TypeError,
916-
"can't intern %.400s", Py_TYPE(s)->tp_name);
913+
PyErr_Format(PyExc_TypeError,
914+
"can't intern %.400s", Py_TYPE(s)->tp_name);
917915
return NULL;
918916
}
919917
}
@@ -1141,10 +1139,9 @@ static PyObject *
11411139
sys_setswitchinterval_impl(PyObject *module, double interval)
11421140
/*[clinic end generated code: output=65a19629e5153983 input=561b477134df91d9]*/
11431141
{
1144-
PyThreadState *tstate = _PyThreadState_GET();
11451142
if (interval <= 0.0) {
1146-
_PyErr_SetString(tstate, PyExc_ValueError,
1147-
"switch interval must be strictly positive");
1143+
PyErr_SetString(PyExc_ValueError,
1144+
"switch interval must be strictly positive");
11481145
return NULL;
11491146
}
11501147
_PyEval_SetSwitchInterval((unsigned long) (1e6 * interval));
@@ -1277,7 +1274,6 @@ sys_set_asyncgen_hooks(PyObject *self, PyObject *args, PyObject *kw)
12771274
static char *keywords[] = {"firstiter", "finalizer", NULL};
12781275
PyObject *firstiter = NULL;
12791276
PyObject *finalizer = NULL;
1280-
PyThreadState *tstate = _PyThreadState_GET();
12811277

12821278
if (!PyArg_ParseTupleAndKeywords(
12831279
args, kw, "|OO", keywords,
@@ -1287,9 +1283,9 @@ sys_set_asyncgen_hooks(PyObject *self, PyObject *args, PyObject *kw)
12871283

12881284
if (finalizer && finalizer != Py_None) {
12891285
if (!PyCallable_Check(finalizer)) {
1290-
_PyErr_Format(tstate, PyExc_TypeError,
1291-
"callable finalizer expected, got %.50s",
1292-
Py_TYPE(finalizer)->tp_name);
1286+
PyErr_Format(PyExc_TypeError,
1287+
"callable finalizer expected, got %.50s",
1288+
Py_TYPE(finalizer)->tp_name);
12931289
return NULL;
12941290
}
12951291
if (_PyEval_SetAsyncGenFinalizer(finalizer) < 0) {
@@ -1302,9 +1298,9 @@ sys_set_asyncgen_hooks(PyObject *self, PyObject *args, PyObject *kw)
13021298

13031299
if (firstiter && firstiter != Py_None) {
13041300
if (!PyCallable_Check(firstiter)) {
1305-
_PyErr_Format(tstate, PyExc_TypeError,
1306-
"callable firstiter expected, got %.50s",
1307-
Py_TYPE(firstiter)->tp_name);
1301+
PyErr_Format(PyExc_TypeError,
1302+
"callable firstiter expected, got %.50s",
1303+
Py_TYPE(firstiter)->tp_name);
13081304
return NULL;
13091305
}
13101306
if (_PyEval_SetAsyncGenFirstiter(firstiter) < 0) {
@@ -1505,7 +1501,6 @@ sys_getwindowsversion_impl(PyObject *module)
15051501
wchar_t kernel32_path[MAX_PATH];
15061502
LPVOID verblock;
15071503
DWORD verblock_size;
1508-
PyThreadState *tstate = _PyThreadState_GET();
15091504

15101505
ver.dwOSVersionInfoSize = sizeof(ver);
15111506
if (!GetVersionExW((OSVERSIONINFOW*) &ver))
@@ -1556,11 +1551,10 @@ sys_getwindowsversion_impl(PyObject *module)
15561551
realBuild
15571552
));
15581553

1559-
if (_PyErr_Occurred(tstate)) {
1554+
if (PyErr_Occurred()) {
15601555
Py_DECREF(version);
15611556
return NULL;
15621557
}
1563-
15641558
return version;
15651559
}
15661560

0 commit comments

Comments
 (0)