Gate more seeks

This commit is contained in:
Matt Nadareski
2024-07-17 14:46:14 -04:00
parent 5fecdad7af
commit 11fa1544f1
6 changed files with 58 additions and 42 deletions

View File

@@ -96,10 +96,10 @@ namespace SabreTools.FileTypes.Archives
public override string? CopyToFile(string entryName, string outDir)
{
// Try to extract a stream using the given information
(Stream? ms, string? realEntry) = GetEntryStream(entryName);
(Stream? stream, string? realEntry) = GetEntryStream(entryName);
// If the stream and the entry name are both non-null, we write to file
if (ms != null && realEntry != null)
if (stream != null && realEntry != null)
{
realEntry = Path.Combine(outDir, realEntry);
@@ -110,21 +110,23 @@ namespace SabreTools.FileTypes.Archives
FileStream fs = File.Create(realEntry);
if (fs != null)
{
ms.Seek(0, SeekOrigin.Begin);
if (stream.CanSeek)
stream.Seek(0, SeekOrigin.Begin);
byte[] zbuffer = new byte[_bufferSize];
int zlen;
while ((zlen = ms.Read(zbuffer, 0, _bufferSize)) > 0)
while ((zlen = stream.Read(zbuffer, 0, _bufferSize)) > 0)
{
fs.Write(zbuffer, 0, zlen);
fs.Flush();
}
ms?.Dispose();
stream?.Dispose();
fs?.Dispose();
}
else
{
ms?.Dispose();
stream?.Dispose();
fs?.Dispose();
realEntry = null;
}