From: Serhiy Storchaka Date: Sat, 13 Jan 2024 13:26:55 +0000 (+0200) Subject: gh-111803: Support loading more deeply nested lists in binary plist format (GH-114024) X-Git-Tag: v3.13.0a3~51 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=77b45fa6d0b8c0c14657b5117b21a3f3f2ce97d8;p=thirdparty%2FPython%2Fcpython.git 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. --- diff --git a/Lib/plistlib.py b/Lib/plistlib.py index 188a0b399b58..67e832db2173 100644 --- a/Lib/plistlib.py +++ b/Lib/plistlib.py @@ -600,7 +600,8 @@ class _BinaryPlistParser: 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 000000000000..546a892b55cc --- /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.