mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 14:26:07 +00:00
Binary plist object tables may list one object offset more than once; plistlib reads each entry independently. The scalar scanner marked any repeated offset as incomplete metadata, which made the number projection drop every exact decimal in the archive. A keyed archive whose entries 10 and 11 share an Int64 9007199254740993 reported both as observed 9007199254740992 and rounded an unrelated 2^60+3 sibling, with only the generic incomplete-metadata caveat. A repeated valid offset carries the same source facts as its first visit, so observe it once and continue. Offsets that fail to parse still mark metadata incomplete. Shared 16-byte integers and dates are rewritten once in the decoder copy, which every entry then reads; the overlap plan already treats one shared offset as one span. Keyed archives and Interface Builder decoding share this scanner.