Disable immortalization around Py_CompileString*().
The same approach as
332356b that fixed the refleaks in compile() and eval().
E:
09e72cf can pass test_capi, test_sys and test__interpchannels with this patch for me.
(cherry picked from commit
c60f39ada625562bff26400f304690c19fe9f504, AKA gh-134686)
Co-authored-by: neonene <53406459+neonene@users.noreply.github.com>
}
goto error;
}
+#ifdef Py_GIL_DISABLED
+ // Don't immortalize code constants to avoid memory leaks.
+ ((_PyThreadStateImpl *)tstate)->suppress_co_const_immortalization++;
+#endif
code = Py_CompileStringExFlags(
script, filename, Py_file_input, &cf, optimize);
+#ifdef Py_GIL_DISABLED
+ ((_PyThreadStateImpl *)tstate)->suppress_co_const_immortalization--;
+#endif
Py_XDECREF(ref);
if (code == NULL) {
goto error;