summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorCrowthebird <78076854+thatbirdguythatuknownot@users.noreply.github.com>2023-06-19 21:50:57 (GMT)
committerGitHub <noreply@github.com>2023-06-19 21:50:57 (GMT)
commit28187a9c4f95affe50fd37e0db0db177e2b9c2e9 (patch)
tree76000e52fd7464afd7784c3839891787c38e1bbd /Python
parent1858db7cbdbf41aa600c954c15224307bf81a258 (diff)
downloadcpython-28187a9c4f95affe50fd37e0db0db177e2b9c2e9.zip
cpython-28187a9c4f95affe50fd37e0db0db177e2b9c2e9.tar.gz
cpython-28187a9c4f95affe50fd37e0db0db177e2b9c2e9.tar.bz2
gh-105908: fix `barry_as_FLUFL` future import (#105909)
Diffstat (limited to 'Python')
-rw-r--r--Python/compile.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/Python/compile.c b/Python/compile.c
index cfa945b..69468f7 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -494,8 +494,10 @@ static PyCodeObject *optimize_and_assemble(struct compiler *, int addNone);
static int
compiler_setup(struct compiler *c, mod_ty mod, PyObject *filename,
- PyCompilerFlags flags, int optimize, PyArena *arena)
+ PyCompilerFlags *flags, int optimize, PyArena *arena)
{
+ PyCompilerFlags local_flags = _PyCompilerFlags_INIT;
+
c->c_const_cache = PyDict_New();
if (!c->c_const_cache) {
return ERROR;
@@ -511,10 +513,13 @@ compiler_setup(struct compiler *c, mod_ty mod, PyObject *filename,
if (!_PyFuture_FromAST(mod, filename, &c->c_future)) {
return ERROR;
}
- int merged = c->c_future.ff_features | flags.cf_flags;
+ if (!flags) {
+ flags = &local_flags;
+ }
+ int merged = c->c_future.ff_features | flags->cf_flags;
c->c_future.ff_features = merged;
- flags.cf_flags = merged;
- c->c_flags = flags;
+ flags->cf_flags = merged;
+ c->c_flags = *flags;
c->c_optimize = (optimize == -1) ? _Py_GetConfig()->optimization_level : optimize;
c->c_nestlevel = 0;
@@ -535,12 +540,11 @@ static struct compiler*
new_compiler(mod_ty mod, PyObject *filename, PyCompilerFlags *pflags,
int optimize, PyArena *arena)
{
- PyCompilerFlags flags = pflags ? *pflags : _PyCompilerFlags_INIT;
struct compiler *c = PyMem_Calloc(1, sizeof(struct compiler));
if (c == NULL) {
return NULL;
}
- if (compiler_setup(c, mod, filename, flags, optimize, arena) < 0) {
+ if (compiler_setup(c, mod, filename, pflags, optimize, arena) < 0) {
compiler_free(c);
return NULL;
}