aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/tools/python3/Python/marshal.c
diff options
context:
space:
mode:
authorshadchin <shadchin@yandex-team.com>2024-10-27 10:52:33 +0300
committershadchin <shadchin@yandex-team.com>2024-10-27 11:03:47 +0300
commit1529383373617c6d14ad4972afdc46a5eb35f954 (patch)
tree229b7647fafadd4ee4b93d20e606c534ad697365 /contrib/tools/python3/Python/marshal.c
parent41d598c624442bf6918407466dac3316b8277347 (diff)
downloadydb-1529383373617c6d14ad4972afdc46a5eb35f954.tar.gz
Update Python 3 to 3.12.7
commit_hash:052a122399d67f1ea5dfbc5f6457e3e06200becf
Diffstat (limited to 'contrib/tools/python3/Python/marshal.c')
-rw-r--r--contrib/tools/python3/Python/marshal.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/contrib/tools/python3/Python/marshal.c b/contrib/tools/python3/Python/marshal.c
index 8ecdb73814..3fc3f89042 100644
--- a/contrib/tools/python3/Python/marshal.c
+++ b/contrib/tools/python3/Python/marshal.c
@@ -14,6 +14,7 @@
#include "pycore_long.h" // _PyLong_DigitCount
#include "pycore_hashtable.h" // _Py_hashtable_t
#include "marshal.h" // Py_MARSHAL_VERSION
+#include "pycore_pystate.h" // _PyInterpreterState_GET()
/*[clinic input]
module marshal
@@ -1158,8 +1159,12 @@ r_object(RFILE *p)
v = PyUnicode_FromKindAndData(PyUnicode_1BYTE_KIND, ptr, n);
if (v == NULL)
break;
- if (is_interned)
- PyUnicode_InternInPlace(&v);
+ if (is_interned) {
+ // marshal is meant to serialize .pyc files with code
+ // objects, and code-related strings are currently immortal.
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ _PyUnicode_InternImmortal(interp, &v);
+ }
retval = v;
R_REF(retval);
break;
@@ -1191,8 +1196,12 @@ r_object(RFILE *p)
}
if (v == NULL)
break;
- if (is_interned)
- PyUnicode_InternInPlace(&v);
+ if (is_interned) {
+ // marshal is meant to serialize .pyc files with code
+ // objects, and code-related strings are currently immortal.
+ PyInterpreterState *interp = _PyInterpreterState_GET();
+ _PyUnicode_InternImmortal(interp, &v);
+ }
retval = v;
R_REF(retval);
break;