Skip to content

Commit 080bb42

Browse files
committed
Fix byte order incorrectly reversing
1 parent 53e105d commit 080bb42

File tree

2 files changed

+6
-19
lines changed

2 files changed

+6
-19
lines changed

src/MessageStudio/Formats/BinaryText/ImmutableMsbt.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ public ImmutableMsbtEntry this[ReadOnlySpan<byte> label] {
3838
public ImmutableMsbt(ref RevrsReader reader)
3939
{
4040
ref MsbtHeader header = ref reader.Read<MsbtHeader, MsbtHeader.Reverser>();
41-
if (header.ByteOrderMark is Endianness.Little) {
41+
if (header.ByteOrderMark != reader.Endianness) {
4242
// Reverse the buffer back to LE
4343
// since it's initially read in BE
44-
reader.Reverse<MsbtHeader, MsbtHeader.DataReverser>(0);
45-
reader.Endianness = Endianness.Little;
44+
reader.Endianness = header.ByteOrderMark;
45+
reader.Reverse<MsbtHeader, MsbtHeader.Reverser>(0);
4646
}
4747

4848
if (header.Magic != Msbt.MSBT_MAGIC) {
@@ -71,6 +71,7 @@ public ImmutableMsbt(ref RevrsReader reader)
7171
}
7272

7373
Header = header;
74+
Header.ByteOrderMark = reader.Endianness;
7475
}
7576

7677
[MethodImpl(MethodImplOptions.AggressiveInlining)]

src/MessageStudio/Formats/BinaryText/Structures/MsbtHeader.cs

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
namespace MessageStudio.Formats.BinaryText.Structures;
77

88
[StructLayout(LayoutKind.Explicit, Size = 32)]
9-
public readonly struct MsbtHeader
9+
public struct MsbtHeader
1010
{
1111
[FieldOffset(0x00)]
1212
public readonly ulong Magic;
1313

1414
[FieldOffset(0x08)]
15-
public readonly Endianness ByteOrderMark;
15+
public Endianness ByteOrderMark;
1616

1717
[FieldOffset(0x0C)]
1818
public readonly TextEncoding Encoding;
@@ -47,18 +47,4 @@ public static void Reverse(in Span<byte> buffer)
4747
buffer[0x12..0x16].Reverse();
4848
}
4949
}
50-
51-
/// <summary>
52-
/// Reverser for only the data,
53-
/// the BoM is not reversed
54-
/// </summary>
55-
public class DataReverser : IStructReverser
56-
{
57-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
58-
public static void Reverse(in Span<byte> buffer)
59-
{
60-
buffer[0x0E..0x10].Reverse();
61-
buffer[0x12..0x16].Reverse();
62-
}
63-
}
6450
}

0 commit comments

Comments
 (0)