mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-10-26 10:47:11 -06:00
The import walks each page's content to learn which optional content group each marked-content sequence belongs to, and stopped after 2,000,000 operators. Past that, art went to the page's "Page N" layer, visible and printable, so a layer that was off (or didn't print) showed and printed; an Illustrator drawing of about a million paths lost 6 of its 15 layers. - The walk now reads up to 64 million operators a page (it reads about 15 million a second, twice as fast as the interpreter draws them; the issue's 2.1-million-operator file imports in 3 s, a 10-million one in 15 s). Marked-content tags are kept as 64-bit hashes rather than byte vectors, and at most 4 million a page, so the walk's memory stays bounded on hostile input. - When the walk is cut short (or the interpreter and the walk otherwise part) and some group is off or doesn't print, art in marked content whose group can't be told goes to a hidden, non-printing "Page N (unsorted)" layer instead of the page's layer, and the warning says so (and that the page was too large to read, when it was). Art drawn past the limit inside a group already open stays in its group; art outside any group stays on the page's layer. Files whose groups all show and print keep the old fallback. Tests (with the limit lowered): a hidden, non-printing group past the limit lands on the hidden unsorted layer while the open group keeps its art and the page's art stays shown; with every group shown, art goes to the page's layer as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>