From 19d43a3e6fb4cb8ea11747d7d7bca7a3542fbb44 Mon Sep 17 00:00:00 2001 From: shadchin Date: Sat, 7 Feb 2026 19:56:35 +0300 Subject: Update Python 3 to 3.13.12 commit_hash:71d3efea437a769b2b7910d196120bb02587046e --- contrib/tools/python3/Python/crossinterp.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'contrib/tools/python3/Python/crossinterp.c') 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; } -- cgit v1.3