bpo-30817: Fix PyErr_PrintEx() when no memory (#2526)
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 25e2da4..17ec182 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -630,9 +630,15 @@
return;
/* Now we know v != NULL too */
if (set_sys_last_vars) {
- _PySys_SetObjectId(&PyId_last_type, exception);
- _PySys_SetObjectId(&PyId_last_value, v);
- _PySys_SetObjectId(&PyId_last_traceback, tb);
+ if (_PySys_SetObjectId(&PyId_last_type, exception) < 0) {
+ PyErr_Clear();
+ }
+ if (_PySys_SetObjectId(&PyId_last_value, v) < 0) {
+ PyErr_Clear();
+ }
+ if (_PySys_SetObjectId(&PyId_last_traceback, tb) < 0) {
+ PyErr_Clear();
+ }
}
hook = _PySys_GetObjectId(&PyId_excepthook);
if (hook) {