From 034bc464d53ff9c7bd66dc0afcd6ae3923c05083 Mon Sep 17 00:00:00 2001 From: Alexander Eichhorn Date: Mon, 20 Apr 2026 18:32:30 +0200 Subject: [PATCH] Fix Linux CI Test --- invokeai/app/invocations/image.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/invokeai/app/invocations/image.py b/invokeai/app/invocations/image.py index 1cb7f6d973..5a0b0e7577 100644 --- a/invokeai/app/invocations/image.py +++ b/invokeai/app/invocations/image.py @@ -1056,16 +1056,19 @@ class SaveImageToFileInvocation(BaseInvocation, WithMetadata, WithBoard): if not self.output_directory: target_dir = outputs_path else: - raw = Path(self.output_directory) - if raw.is_absolute() or raw.drive or raw.as_posix().startswith("/"): + raw_str = self.output_directory + raw = Path(raw_str) + has_windows_drive = len(raw_str) >= 2 and raw_str[0].isalpha() and raw_str[1] == ":" + starts_with_sep = raw_str.startswith("/") or raw_str.startswith("\\") + if raw.is_absolute() or raw.drive or has_windows_drive or starts_with_sep: raise ValueError( - f"Absolute paths are not allowed in output_directory: {self.output_directory!r}. " + f"Absolute paths are not allowed in output_directory: {raw_str!r}. " "Use a path relative to the InvokeAI outputs folder." ) candidate = (outputs_path / raw).resolve() outputs_resolved = outputs_path.resolve() if outputs_resolved != candidate and outputs_resolved not in candidate.parents: - raise ValueError(f"output_directory must stay within the outputs folder: {self.output_directory!r}") + raise ValueError(f"output_directory must stay within the outputs folder: {raw_str!r}") target_dir = candidate target_dir.mkdir(parents=True, exist_ok=True)