#788: hold opened projects and size commands to the 30,000 px limits

Problem: comp.new/comp.settings clamp sizes to 30,000 px, frame rates to
0.001-1000 fps and motion-blur samples to 2-64, but reading a project
(.ecproj and .ecprojx, templates, recovery, offload) accepted any value:
a 4-billion-px comp, solid or footage frame, a 0 or 10^18 fps rate
(zero-length frames), a negative duration or 4 billion blur samples all
reached the renderer. New Solid, Layer Settings, Import Solid/Placeholder,
Crop Comp and PSD import set sizes without the upper bound, and comp
sizes past 2^32 wrapped.

Fix: one set of limits in effectcraft_project::limits. Project::from_json
brings every item (and proxy) within them; from_json_repaired also says
what it changed, which file.open returns as `repaired` and shows in a
toast, so the project still opens. Project::add_item applies the same
limits to every new item, and the size-setting commands clamp with the
shared helpers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
vangel76
2026-10-11 13:22:59 +02:00
co-authored by Claude Opus 5.5
parent 9a7d3e7699
commit 765ba157be
11 changed files with 388 additions and 26 deletions
+5 -1
View File
@@ -889,7 +889,11 @@ saved warns that what this version doesn't know is lost on saving (`file.open` r
`savedBy`). Saving checks that the file reads back first, so a value JSON can't hold (NaN)
fails the save with a message instead of writing a project that can never be opened (the file
on disk is left as it was). Increment and Save and Save a Copy keep an XML project (`.ecprojx`)
XML; a file that isn't a project says so by name.
XML; a file that isn't a project says so by name. A corrupt or hostile project opens within the
limits the commands use (#788): compositions, solids and footage at most 30,000 × 30,000 px (as in
After Effects), frame rates 0.001–1000 fps, pixel aspect 0.1–10, compositions at least one frame
long and 2–64 motion-blur samples; `file.open` lists what it corrected (`repaired`) and a toast
names it.
### Update: M3.13 menu bar