Skip to content

Commit

Permalink
Fix unnecessarily zeroing out buffers
Browse files Browse the repository at this point in the history
  • Loading branch information
AnimatedSwine37 committed Apr 21, 2024
1 parent 521b5c7 commit f0b848f
Showing 1 changed file with 6 additions and 46 deletions.
52 changes: 6 additions & 46 deletions Emulator/PAK.Stream.Emulator/Pak/PakBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -138,13 +138,8 @@ private unsafe MultiStream BuildV1(IEntry[] entries, IntPtr handle, string filep
pairs.Add(new(new FileSliceStreamW32(overwrittenFile, logger), OffsetRange.FromStartAndLength(currentOffset + sizeofentry, overwrittenFile.Length)));
if (length > overwrittenFile.Length)
{
var overstream = new MemoryStream();
byte[] buffer = new byte[length - overwrittenFile.Length];
for (int f = 0; i < buffer.Length; i++)
{
buffer[f] = 0x00;
}
overstream.Write(buffer, 0, buffer.Length);
var overstream = new MemoryStream(buffer);
pairs.Add(new(overstream, OffsetRange.FromStartAndLength(currentOffset + sizeofentry + overwrittenFile.Length, buffer.Length)));
}
}
Expand Down Expand Up @@ -177,10 +172,6 @@ private unsafe MultiStream BuildV1(IEntry[] entries, IntPtr handle, string filep
{
entryStream.Seek((int)entryStream.Length, SeekOrigin.Begin);
byte[] buffer = new byte[length - (int)entryStream.Length];
for (int f = 0; i < buffer.Length; i++)
{
buffer[f] = 0x00;
}
entryStream.Write(buffer, 0, buffer.Length);
}
pairs.Add(new(entryStream, OffsetRange.FromStartAndLength(currentOffset + sizeofentry, length)));
Expand Down Expand Up @@ -212,13 +203,8 @@ private unsafe MultiStream BuildV1(IEntry[] entries, IntPtr handle, string filep
pairs.Add(merged);

// Add an extra empty entry header (the game might try to read it)
MemoryStream dummyHeader = new MemoryStream(sizeof(V1FileEntry));
byte[] dummyBuffer = new byte[sizeof(V1FileEntry)];
for (int f = 0; i < dummyBuffer.Length; i++)
{
dummyBuffer[f] = 0x00;
}
dummyHeader.Write(dummyBuffer, 0, dummyBuffer.Length);
MemoryStream dummyHeader = new MemoryStream(dummyBuffer);
pairs.Add(new(dummyHeader, OffsetRange.FromStartAndLength(currentOffset, sizeof(V1FileEntry))));

// Return MultiStream
Expand Down Expand Up @@ -303,13 +289,8 @@ private unsafe MultiStream BuildV2(IEntry[] entries, IntPtr handle, string filep
pairs.Add(new(new FileSliceStreamW32(overwrittenFile, logger), OffsetRange.FromStartAndLength(currentOffset + sizeofentry, overwrittenFile.Length)));
if (length > overwrittenFile.Length)
{
var overstream = new MemoryStream();
byte[] buffer = new byte[length - overwrittenFile.Length];
for (int f = 0; i < buffer.Length; i++)
{
buffer[f] = 0x00;
}
overstream.Write(buffer, 0, buffer.Length);
var overstream = new MemoryStream(buffer);
pairs.Add(new(overstream, OffsetRange.FromStartAndLength(currentOffset + sizeofentry + overwrittenFile.Length, buffer.Length)));
}
}
Expand Down Expand Up @@ -343,10 +324,6 @@ private unsafe MultiStream BuildV2(IEntry[] entries, IntPtr handle, string filep
{
entryStream.Seek((int)entryStream.Length, SeekOrigin.Begin);
byte[] buffer = new byte[length - (int)entryStream.Length];
for (int f = 0; i < buffer.Length; i++)
{
buffer[f] = 0x00;
}
entryStream.Write(buffer, 0, buffer.Length);
}
pairs.Add(new(entryStream, OffsetRange.FromStartAndLength(currentOffset + sizeofentry, length)));
Expand Down Expand Up @@ -379,12 +356,8 @@ private unsafe MultiStream BuildV2(IEntry[] entries, IntPtr handle, string filep
pairs.Add(merged);

// Add an extra empty entry header (the game might try to read it)
MemoryStream dummyHeader = new MemoryStream(sizeof(V2FileEntry));
byte[] dummyBuffer = new byte[sizeof(V2FileEntry)];
for (int f = 0; i < dummyBuffer.Length; i++)
{
dummyBuffer[f] = 0x00;
}
MemoryStream dummyHeader = new MemoryStream(dummyBuffer);
dummyHeader.Write(dummyBuffer, 0, dummyBuffer.Length);
pairs.Add(new(dummyHeader, OffsetRange.FromStartAndLength(currentOffset, sizeof(V2FileEntry))));

Expand Down Expand Up @@ -470,13 +443,8 @@ private unsafe MultiStream BuildV3(IEntry[] entries, IntPtr handle, string filep
pairs.Add(new(new FileSliceStreamW32(overwrittenFile, logger), OffsetRange.FromStartAndLength(currentOffset + sizeofentry, overwrittenFile.Length)));
if (length > overwrittenFile.Length)
{
var overstream = new MemoryStream();
byte[] buffer = new byte[length - overwrittenFile.Length];
for (int f = 0; i < buffer.Length; i++)
{
buffer[f] = 0x00;
}
overstream.Write(buffer, 0, buffer.Length);
var overstream = new MemoryStream(buffer);
pairs.Add(new(overstream, OffsetRange.FromStartAndLength(currentOffset + sizeofentry + overwrittenFile.Length, buffer.Length)));
}
}
Expand Down Expand Up @@ -509,10 +477,6 @@ private unsafe MultiStream BuildV3(IEntry[] entries, IntPtr handle, string filep
{
entryStream.Seek((int)entryStream.Length, SeekOrigin.Begin);
byte[] buffer = new byte[length - (int)entryStream.Length];
for (int f = 0; i < buffer.Length; i++)
{
buffer[f] = 0x00;
}
entryStream.Write(buffer, 0, buffer.Length);
}
pairs.Add(new(entryStream, OffsetRange.FromStartAndLength(currentOffset + sizeofentry, length)));
Expand Down Expand Up @@ -542,12 +506,8 @@ private unsafe MultiStream BuildV3(IEntry[] entries, IntPtr handle, string filep
pairs.Add(merged);

// Add an extra empty entry header (the game might try to read it)
MemoryStream dummyHeader = new MemoryStream(sizeof(V3FileEntry));
byte[] dummyBuffer = new byte[sizeof(V3FileEntry)];
for (int f = 0; i < dummyBuffer.Length; i++)
{
dummyBuffer[f] = 0x00;
}
MemoryStream dummyHeader = new MemoryStream(dummyBuffer);
dummyHeader.Write(dummyBuffer, 0, dummyBuffer.Length);
pairs.Add(new(dummyHeader, OffsetRange.FromStartAndLength(currentOffset, sizeof(V3FileEntry))));

Expand Down

0 comments on commit f0b848f

Please sign in to comment.