From 3675a8ac75c7a29443ce070d45550b5fb2af8559 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Tue, 14 Apr 2026 10:25:05 -0400 Subject: [PATCH] Fix flaw in writable interface --- SabreTools.Wrappers/Atari7800Cart.Writing.cs | 17 ++++++++++------- SabreTools.Wrappers/AtariLynxCart.Writing.cs | 17 ++++++++++------- SabreTools.Wrappers/IWritable.cs | 4 ++-- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/SabreTools.Wrappers/Atari7800Cart.Writing.cs b/SabreTools.Wrappers/Atari7800Cart.Writing.cs index 672d05dc..e2c8a182 100644 --- a/SabreTools.Wrappers/Atari7800Cart.Writing.cs +++ b/SabreTools.Wrappers/Atari7800Cart.Writing.cs @@ -8,14 +8,17 @@ namespace SabreTools.Wrappers public partial class Atari7800Cart : IWritable { /// - public bool Write(string outputDirectory, bool includeDebug) + public bool Write(string outputPath, bool includeDebug) { - // Get the base path - string outputFilename = Filename is null - ? Guid.NewGuid().ToString() - : Path.GetFileName(Filename); - outputFilename += ".a78"; - string outputPath = Path.Combine(outputDirectory, outputFilename); + // Ensure an output path + if (string.IsNullOrEmpty(outputPath)) + { + string outputFilename = Filename is null + ? Guid.NewGuid().ToString() + : Path.GetFileName(Filename); + outputFilename += ".a78"; + outputPath = Path.Combine(outputPath, outputFilename); + } // Check for invalid data if (Header is null || Model.Data is null || Model.Data.Length == 0) diff --git a/SabreTools.Wrappers/AtariLynxCart.Writing.cs b/SabreTools.Wrappers/AtariLynxCart.Writing.cs index c1086fa2..45a575f0 100644 --- a/SabreTools.Wrappers/AtariLynxCart.Writing.cs +++ b/SabreTools.Wrappers/AtariLynxCart.Writing.cs @@ -8,14 +8,17 @@ namespace SabreTools.Wrappers public partial class AtariLynxCart : IWritable { /// - public bool Write(string outputDirectory, bool includeDebug) + public bool Write(string outputPath, bool includeDebug) { - // Get the base path - string outputFilename = Filename is null - ? Guid.NewGuid().ToString() - : Path.GetFileName(Filename); - outputFilename += ".lnx"; - string outputPath = Path.Combine(outputDirectory, outputFilename); + // Ensure an output path + if (string.IsNullOrEmpty(outputPath)) + { + string outputFilename = Filename is null + ? Guid.NewGuid().ToString() + : Path.GetFileName(Filename); + outputFilename += "lnx"; + outputPath = Path.Combine(outputPath, outputFilename); + } // Check for invalid data if (Header is null || Model.Data is null || Model.Data.Length == 0) diff --git a/SabreTools.Wrappers/IWritable.cs b/SabreTools.Wrappers/IWritable.cs index df5f83fc..d1ca1318 100644 --- a/SabreTools.Wrappers/IWritable.cs +++ b/SabreTools.Wrappers/IWritable.cs @@ -8,9 +8,9 @@ namespace SabreTools.Wrappers /// /// Write to an output directory /// - /// Output directory to write to + /// Output path to write to /// True to include debug data, false otherwise /// True if writing succeeded, false otherwise - public bool Write(string outputDirectory, bool includeDebug); + public bool Write(string outputPath, bool includeDebug); } }