summaryrefslogtreecommitdiffstats
path: root/contrib/tools/python3/Python/crossinterp.c
diff options
context:
space:
mode:
authorshadchin <[email protected]>2026-02-07 19:56:35 +0300
committershadchin <[email protected]>2026-02-07 20:23:53 +0300
commit19d43a3e6fb4cb8ea11747d7d7bca7a3542fbb44 (patch)
tree0b1418938140a0b6470953bef6069454ffdf1bd0 /contrib/tools/python3/Python/crossinterp.c
parent0879409bfc0891ab8103828a3bdbf0e960475fec (diff)
Update Python 3 to 3.13.12
commit_hash:71d3efea437a769b2b7910d196120bb02587046e
Diffstat (limited to 'contrib/tools/python3/Python/crossinterp.c')
-rw-r--r--contrib/tools/python3/Python/crossinterp.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/contrib/tools/python3/Python/crossinterp.c b/contrib/tools/python3/Python/crossinterp.c
index 2f6324d300d..d150c6e03c0 100644
--- a/contrib/tools/python3/Python/crossinterp.c
+++ b/contrib/tools/python3/Python/crossinterp.c
@@ -337,7 +337,7 @@ _PyCrossInterpreterData_ReleaseAndRawFree(_PyCrossInterpreterData *data)
/* convenience utilities */
/*************************/
-static const char *
+static char *
_copy_string_obj_raw(PyObject *strobj, Py_ssize_t *p_size)
{
Py_ssize_t size = -1;
@@ -441,11 +441,16 @@ _format_TracebackException(PyObject *tbexc)
}
Py_ssize_t size = -1;
- const char *formatted = _copy_string_obj_raw(formatted_obj, &size);
+ char *formatted = _copy_string_obj_raw(formatted_obj, &size);
Py_DECREF(formatted_obj);
- // We remove trailing the newline added by TracebackException.format().
- assert(formatted[size-1] == '\n');
- ((char *)formatted)[size-1] = '\0';
+ if (formatted == NULL || size == 0) {
+ return formatted;
+ }
+ assert(formatted[size] == '\0');
+ // Remove a trailing newline if needed.
+ if (formatted[size-1] == '\n') {
+ formatted[size-1] = '\0';
+ }
return formatted;
}
@@ -1687,6 +1692,7 @@ _PyXI_ApplyCapturedException(_PyXI_session *session)
assert(session->error != NULL);
PyObject *res = _PyXI_ApplyError(session->error);
assert((res == NULL) != (PyErr_Occurred() == NULL));
+ _PyXI_excinfo_Clear(&session->error->uncaught);
session->error = NULL;
return res;
}