#1743: check final storage overflow destinations for queued outputs

This commit is contained in:
Kristian Myram
2026-10-30 09:55:49 +01:00
parent f558305795
commit b7d97c20e9
7 changed files with 175 additions and 26 deletions
+3 -2
View File
@@ -59,7 +59,8 @@ pub trait Exporter: Send + Sync {
fn formats(&self) -> Vec<OutputFormat>;
/// Whether Skip Existing Files preserves sequence frames written by earlier items. Exporters
/// without an existence check (such as memory sinks) must keep the conservative default.
fn supports_skip_existing(&self) -> bool {
/// The check must cover the final destination for these settings, including any overflow.
fn supports_skip_existing(&self, _settings: &effectcraft_project::render_queue::RenderSettings) -> bool {
false
}
/// Render and write one item (blocking). `progress(done, total)` returns `false` to cancel;
@@ -500,7 +501,7 @@ impl Session {
let refused = self.check_outputs(&items);
// Two outputs of this job on one file: the render would replace its own output, so it is
// refused before anything is written (the items refused above take no part).
if let Some(refusal) = crate::output_guard::duplicate_refusal(&self.duplicate_outputs(&items, &refused)) {
if let Some(refusal) = crate::output_guard::duplicate_refusal(&self.duplicate_outputs(&items, &refused)?) {
return Err(refusal);
}
items.retain(|modules| modules.first().is_none_or(|(it, _)| !refused.iter().any(|r| r.item == it.id)));