mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-11-15 17:00:38 +00:00
Close the Wise script and the multipart file after extraction (#104)
* Look for the Wise overlay header before opening the file again ExtractWiseOverlay (and ExtractWise for NE) opened a second stream on the executable for multi-part Wise installers before checking for a Wise overlay header at all. For any other executable that stream was never closed, so the file stayed open until the stream was finalized. On Windows such a file cannot be deleted, so an extraction folder that contains it is left behind in TEMP. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Close the Wise script and the multipart file after extraction ExtractWiseOverlay (and ExtractWise for NE) never closed WiseScript.bin, which it opens from the output directory, nor the stream with the installer and its parts, so these files stayed open until their streams were finalized. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Keep the original block that opens the multipart file Close the multipart stream with a separate using declaration after the block instead of rewriting it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -222,6 +222,9 @@ namespace SabreTools.Wrappers
|
||||
source = temp;
|
||||
}
|
||||
|
||||
// Close the multipart file again on return
|
||||
using var multipart = source == _dataSource ? null : source;
|
||||
|
||||
return ExtractWiseOverlay(outputDirectory, includeDebug, source, offset);
|
||||
}
|
||||
|
||||
@@ -253,7 +256,7 @@ namespace SabreTools.Wrappers
|
||||
}
|
||||
|
||||
// Open the script file from the output directory
|
||||
var scriptStream = File.OpenRead(Path.Combine(outputDirectory, "WiseScript.bin"));
|
||||
using var scriptStream = File.OpenRead(Path.Combine(outputDirectory, "WiseScript.bin"));
|
||||
var script = WiseScript.Create(scriptStream);
|
||||
if (script is null)
|
||||
{
|
||||
|
||||
@@ -652,6 +652,9 @@ namespace SabreTools.Wrappers
|
||||
source = temp;
|
||||
}
|
||||
|
||||
// Close the multipart file again on return
|
||||
using var multipart = source == _dataSource ? null : source;
|
||||
|
||||
// Seek to the overlay and parse
|
||||
source.SeekIfPossible(offset, SeekOrigin.Begin);
|
||||
var header = WiseOverlayHeader.Create(source);
|
||||
@@ -670,7 +673,7 @@ namespace SabreTools.Wrappers
|
||||
}
|
||||
|
||||
// Open the script file from the output directory
|
||||
var scriptStream = File.OpenRead(Path.Combine(outputDirectory, "WiseScript.bin"));
|
||||
using var scriptStream = File.OpenRead(Path.Combine(outputDirectory, "WiseScript.bin"));
|
||||
var script = WiseScript.Create(scriptStream);
|
||||
if (script is null)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user