Skip to content

Commit 091cf9c

Browse files
committed
compute checksum on unencoded buffer, not encoded buffer
1 parent 74c3072 commit 091cf9c

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

Dat/FileParsing/SawyerStreamWriter.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,6 @@ public static MemoryStream WriteLocoObjectStream(string objName, SourceGame sour
419419

420420
rawObjStream.Flush();
421421

422-
using var encodedObjStream = new MemoryStream(Encode(encoding, rawObjStream.ToArray()));
423422

424423
// now obj is written, we can calculate the few bits of metadata (checksum and length) for the headers
425424

@@ -441,8 +440,10 @@ public static MemoryStream WriteLocoObjectStream(string objName, SourceGame sour
441440
// calculate checksum
442441
var headerFlag = BitConverter.GetBytes(s5Header.Flags).AsSpan()[0..1];
443442
var asciiName = objName.PadRight(8, ' ').Take(8).Select(c => (byte)c).ToArray();
444-
s5Header.Checksum = SawyerStreamUtils.ComputeObjectChecksum(headerFlag, asciiName, encodedObjStream.ToArray());
443+
var rawObjBytes = rawObjStream.ToArray();
444+
s5Header.Checksum = SawyerStreamUtils.ComputeObjectChecksum(headerFlag, asciiName, rawObjBytes);
445445

446+
using var encodedObjStream = new MemoryStream(Encode(encoding, rawObjBytes));
446447
var objHeader = new ObjectHeader(encoding, (uint32_t)encodedObjStream.Length);
447448

448449
// actual writing

Gui/ViewModels/DatTypes/S5HeaderViewModel.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
namespace OpenLoco.Gui.ViewModels
99
{
10-
1110
[TypeConverter(typeof(ExpandableObjectConverter))]
1211
public class S5HeaderViewModel : ReactiveObject
1312
{

0 commit comments

Comments
 (0)