mirror of
https://github.com/storytold/figcraft.git
synced 2026-10-24 10:27:00 -06:00
SVG and PDF exports check the visible subtree's depth before bounds or drawing and refuse, with an actionable message, a document nested past 256 levels instead of silently leaving the deep layers out; nothing partial is written, and an inner layer can still be exported. The CLI and MCP report the same error. Fixes #208. Also: on Windows, figcraft and figcraft-cli link with an 8 MB main-thread stack (Windows gives 1 MB where Linux and macOS give 8), so an export at the depth limit no longer overflows it. Co-authored-by: bflatastic <bflatastic@users.noreply.github.com>
15 lines
623 B
Rust
15 lines
623 B
Rust
//! Windows: give the main thread the stack Linux and macOS give it (see `main_thread_stack`).
|
|
fn main() {
|
|
main_thread_stack();
|
|
}
|
|
|
|
/// Windows starts the main thread with 1 MB of stack, Linux and macOS with 8 MB. Layers nest up
|
|
/// to 256 deep in an export, and that recursion needs the same room everywhere.
|
|
fn main_thread_stack() {
|
|
if std::env::var("CARGO_CFG_TARGET_OS").as_deref() != Ok("windows") {
|
|
return;
|
|
}
|
|
let msvc = std::env::var("CARGO_CFG_TARGET_ENV").as_deref() == Ok("msvc");
|
|
println!("cargo::rustc-link-arg-bins={}", if msvc { "/STACK:8388608" } else { "-Wl,--stack,8388608" });
|
|
}
|