From 08deed1af56bec8668c6cb4d5cfd89e393e1fe5e Mon Sep 17 00:00:00 2001 From: Eric Snow Date: Mon, 28 Feb 2022 15:15:48 -0700 Subject: bpo-46753: Add the empty tuple to the _PyRuntimeState.global_objects. (gh-31345) https://bugs.python.org/issue46753 --- Tools/scripts/deepfreeze.py | 2 ++ Tools/scripts/generate_global_objects.py | 3 +++ 2 files changed, 5 insertions(+) (limited to 'Tools/scripts') diff --git a/Tools/scripts/deepfreeze.py b/Tools/scripts/deepfreeze.py index cdd34ddb8b..954fca81b5 100644 --- a/Tools/scripts/deepfreeze.py +++ b/Tools/scripts/deepfreeze.py @@ -287,6 +287,8 @@ class Printer: return f"& {name}.ob_base" def generate_tuple(self, name: str, t: Tuple[object, ...]) -> str: + if len(t) == 0: + return f"(PyObject *)& _Py_SINGLETON(tuple_empty)" items = [self.generate(f"{name}_{i}", it) for i, it in enumerate(t)] self.write("static") with self.indent(): diff --git a/Tools/scripts/generate_global_objects.py b/Tools/scripts/generate_global_objects.py index 506aa86575..639d8fa91c 100644 --- a/Tools/scripts/generate_global_objects.py +++ b/Tools/scripts/generate_global_objects.py @@ -252,6 +252,9 @@ def generate_runtime_init(identifiers, strings): for name in sorted(identifiers): assert name.isidentifier(), name printer.write(f'INIT_ID({name}),') + printer.write('') + with printer.block('.tuple_empty =', ','): + printer.write('.ob_base = _PyVarObject_IMMORTAL_INIT(&PyTuple_Type, 0)') printer.write(END) printer.write(after) -- cgit v1.2.1