offset/length calculation for this was severely broken

This commit is contained in:
Michael Becker 2020-06-07 01:30:20 -04:00
parent 6c0046a21d
commit 020d7b2a3d
No known key found for this signature in database
GPG Key ID: 506F54899E2BFED7

View File

@ -47,23 +47,30 @@ namespace UniversalEditor.DataFormats.FileSystem.NewWorldComputing
IO.Reader reader = base.Accessor.Reader;
uint fileCount = reader.ReadUInt32();
uint offset = 0;
uint lastOffset = 0;
for (uint i = 0; i < fileCount; i++)
{
File file = new File();
file.Name = reader.ReadNullTerminatedString(40);
uint length = reader.ReadUInt32();
uint offset = reader.ReadUInt32();
if (i > 0)
{
uint length = (uint)(offset - lastOffset);
fsom.Files[(int)(i - 1)].Properties.Add("length", length);
fsom.Files[(int)(i - 1)].Size = length;
}
lastOffset = offset;
file.DataRequest += file_DataRequest;
file.Size = length;
file.Properties.Add("offset", offset);
file.Properties.Add("length", length);
file.Properties.Add("reader", reader);
file.Properties.Add("reader", reader);
fsom.Files.Add(file);
offset += length;
}
uint final_length = (uint)(Accessor.Length - (uint)(fsom.Files[(int)fileCount - 1].Properties["offset"]));
fsom.Files[(int)fileCount - 1].Properties.Add("length", final_length);
fsom.Files[(int)fileCount - 1].Size = final_length;
}
protected override void SaveInternal(ObjectModel objectModel)