Files
pdfcraft/crates/render
mtlcl410andClaude Opus 5.5 3602d9f2d9 M5: a group member outlives its deleted primary without /IRT; /IRT walks tested past their bounds
Deleting a group's primary (delete_annotation, lift_annotation) or
clearing a redaction mark with a group member (redact::clear_marks) now
removes /IRT from each subordinate that stays and keeps its /RT /Group,
as Acrobat desktop does. The kept member no longer refers to the deleted
annotation, so a full save leaves the deleted one's content out. It is
part of the same edit: one undo restores the group, /IRT included.
lift_annotation's copy-only uses (the page beneath a dragged stamp or
signature) only render the copy, so the change there is harmless.

Each /IRT walk this PR relies on gets a test past its bound and a loop:
group_primaries on an unsettled loop (render), comment_summary under a
100-deep chain of subordinates and a self-listed loop (engine), and
deletion over a 200-deep thread and reply and group loops (annot).

Review on #4358.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pq7HyCfwzyRXj4VfQAVVdv
2026-11-01 22:09:33 +08:00
..