mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
[ArchiveTools] Fix odd information from certain files
This commit is contained in:
@@ -261,13 +261,26 @@ namespace SabreTools.Helper.Tools
|
|||||||
|
|
||||||
FileStream writeStream = FileTools.TryCreate(Path.Combine(outDir, zf.Entries[i].FileName));
|
FileStream writeStream = FileTools.TryCreate(Path.Combine(outDir, zf.Entries[i].FileName));
|
||||||
|
|
||||||
byte[] ibuffer = new byte[_bufferSize];
|
// If the stream is smaller than the buffer, just run one loop through to avoid issues
|
||||||
int ilen;
|
if (streamsize < _bufferSize)
|
||||||
while ((ilen = readStream.Read(ibuffer, 0, _bufferSize)) > 0)
|
|
||||||
{
|
{
|
||||||
|
byte[] ibuffer = new byte[streamsize];
|
||||||
|
int ilen = readStream.Read(ibuffer, 0, (int)streamsize);
|
||||||
writeStream.Write(ibuffer, 0, ilen);
|
writeStream.Write(ibuffer, 0, ilen);
|
||||||
writeStream.Flush();
|
writeStream.Flush();
|
||||||
}
|
}
|
||||||
|
// Otherwise, we do the normal loop
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int realBufferSize = (streamsize < _bufferSize ? (int)streamsize : _bufferSize);
|
||||||
|
byte[] ibuffer = new byte[realBufferSize];
|
||||||
|
int ilen;
|
||||||
|
while ((ilen = readStream.Read(ibuffer, 0, realBufferSize)) > 0)
|
||||||
|
{
|
||||||
|
writeStream.Write(ibuffer, 0, ilen);
|
||||||
|
writeStream.Flush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
zr = zf.CloseReadStream();
|
zr = zf.CloseReadStream();
|
||||||
writeStream.Dispose();
|
writeStream.Dispose();
|
||||||
@@ -443,14 +456,26 @@ namespace SabreTools.Helper.Tools
|
|||||||
realEntry = zf.Entries[i].FileName;
|
realEntry = zf.Entries[i].FileName;
|
||||||
zr = zf.OpenReadStream(i, false, out Stream readStream, out ulong streamsize, out SabreTools.Helper.Data.CompressionMethod cm, out uint lastMod);
|
zr = zf.OpenReadStream(i, false, out Stream readStream, out ulong streamsize, out SabreTools.Helper.Data.CompressionMethod cm, out uint lastMod);
|
||||||
|
|
||||||
// Write the file out
|
// If the stream is smaller than the buffer, just run one loop through to avoid issues
|
||||||
byte[] zbuffer = new byte[_bufferSize];
|
if (streamsize < _bufferSize)
|
||||||
int zlen;
|
|
||||||
while ((zlen = readStream.Read(zbuffer, 0, _bufferSize)) > 0)
|
|
||||||
{
|
{
|
||||||
ms.Write(zbuffer, 0, zlen);
|
byte[] ibuffer = new byte[streamsize];
|
||||||
|
int ilen = readStream.Read(ibuffer, 0, (int)streamsize);
|
||||||
|
ms.Write(ibuffer, 0, ilen);
|
||||||
ms.Flush();
|
ms.Flush();
|
||||||
}
|
}
|
||||||
|
// Otherwise, we do the normal loop
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int realBufferSize = (streamsize < _bufferSize ? (int)streamsize : _bufferSize);
|
||||||
|
byte[] ibuffer = new byte[realBufferSize];
|
||||||
|
int ilen;
|
||||||
|
while ((ilen = readStream.Read(ibuffer, 0, realBufferSize)) > 0)
|
||||||
|
{
|
||||||
|
ms.Write(ibuffer, 0, ilen);
|
||||||
|
ms.Flush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
zr = zf.CloseReadStream();
|
zr = zf.CloseReadStream();
|
||||||
}
|
}
|
||||||
@@ -893,13 +918,26 @@ namespace SabreTools.Helper.Tools
|
|||||||
{
|
{
|
||||||
MemoryStream entryStream = new MemoryStream();
|
MemoryStream entryStream = new MemoryStream();
|
||||||
|
|
||||||
byte[] ibuffer = new byte[_bufferSize];
|
// If the stream is smaller than the buffer, just run one loop through to avoid issues
|
||||||
int ilen;
|
if (streamsize < _bufferSize)
|
||||||
while ((ilen = readStream.Read(ibuffer, 0, _bufferSize)) > 0)
|
|
||||||
{
|
{
|
||||||
|
byte[] ibuffer = new byte[streamsize];
|
||||||
|
int ilen = readStream.Read(ibuffer, 0, (int)streamsize);
|
||||||
entryStream.Write(ibuffer, 0, ilen);
|
entryStream.Write(ibuffer, 0, ilen);
|
||||||
entryStream.Flush();
|
entryStream.Flush();
|
||||||
}
|
}
|
||||||
|
// Otherwise, we do the normal loop
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int realBufferSize = (streamsize < _bufferSize ? (int)streamsize : _bufferSize);
|
||||||
|
byte[] ibuffer = new byte[realBufferSize];
|
||||||
|
int ilen;
|
||||||
|
while ((ilen = readStream.Read(ibuffer, 0, realBufferSize)) > 0)
|
||||||
|
{
|
||||||
|
entryStream.Write(ibuffer, 0, ilen);
|
||||||
|
entryStream.Flush();
|
||||||
|
}
|
||||||
|
}
|
||||||
zr = zf.CloseReadStream();
|
zr = zf.CloseReadStream();
|
||||||
|
|
||||||
// Get and add the extended Rom information
|
// Get and add the extended Rom information
|
||||||
|
|||||||
Reference in New Issue
Block a user