From 77b45fa6d0b8c0c14657b5117b21a3f3f2ce97d8 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sat, 13 Jan 2024 15:26:55 +0200 Subject: [PATCH] gh-111803: Support loading more deeply nested lists in binary plist format (GH-114024) It no longer uses the C stack. The depth of nesting is only limited by Python recursion limit setting. --- Lib/plistlib.py | 3 ++- .../Library/2024-01-13-14-20-31.gh-issue-111803.llpLAw.rst | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2024-01-13-14-20-31.gh-issue-111803.llpLAw.rst diff --git a/Lib/plistlib.py b/Lib/plistlib.py index 188a0b399b587b..67e832db217319 100644 --- a/Lib/plistlib.py +++ b/Lib/plistlib.py @@ -600,7 +600,8 @@ def _read_object(self, ref): obj_refs = self._read_refs(s) result = [] self._objects[ref] = result - result.extend(self._read_object(x) for x in obj_refs) + for x in obj_refs: + result.append(self._read_object(x)) # tokenH == 0xB0 is documented as 'ordset', but is not actually # implemented in the Apple reference code. diff --git a/Misc/NEWS.d/next/Library/2024-01-13-14-20-31.gh-issue-111803.llpLAw.rst b/Misc/NEWS.d/next/Library/2024-01-13-14-20-31.gh-issue-111803.llpLAw.rst new file mode 100644 index 00000000000000..546a892b55ccd7 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2024-01-13-14-20-31.gh-issue-111803.llpLAw.rst @@ -0,0 +1,2 @@ +:mod:`plistlib` now supports loading more deeply nested lists in binary +format.