From bf2a6b52de7a25238deba99bcadbdbaf7fd1aa64 Mon Sep 17 00:00:00 2001 From: Mex <44814932+MMexicann@users.noreply.github.com> Date: Thu, 5 Nov 2026 00:09:33 +0100 Subject: [PATCH] fix(engine): reject non-string stem output formats Address review r3017244428: only an absent format defaults to WAV; a present non-string value returns a parameter error before creating the output directory. --- crates/engine/src/cmd/file.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/crates/engine/src/cmd/file.rs b/crates/engine/src/cmd/file.rs index a207791e..a2f5c507 100644 --- a/crates/engine/src/cmd/file.rs +++ b/crates/engine/src/cmd/file.rs @@ -92,7 +92,10 @@ pub fn specs() -> Vec { let dir = str_param(p, "dir").ok_or_else(|| bad("file.bounce_stems", "`dir` required"))?.to_string(); let r = range_param(e, "file.bounce_stems", p)?; let r = if r.is_empty() { soundcraft_time::Range::new(0, e.session().content_end().max(1)) } else { r }; - let format_name = str_param(p, "format").unwrap_or("wav"); + let format_name = match p.get("format") { + None => "wav", + Some(value) => value.as_str().ok_or_else(|| bad("file.bounce_stems", "`format` must be a string"))?, + }; let format = soundcraft_audio_io::FileFormat::from_write_extension(format_name).ok_or_else(|| { let supported = soundcraft_audio_io::FileFormat::writable_extensions().join(", "); bad("file.bounce_stems", format!("cannot write `{format_name}` files (supported: {supported})"))