From 35123c6c06feadaeb113ae4c509ae8f009e4d7d8 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Tue, 21 Oct 2025 10:34:36 +0100 Subject: [PATCH] [DiscFerret] Use new source generator based big endian marshaller --- Aaru.Images/DiscFerret/Read.cs | 8 ++++---- Aaru.Images/DiscFerret/Structs.cs | 12 +++++++----- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/Aaru.Images/DiscFerret/Read.cs b/Aaru.Images/DiscFerret/Read.cs index 59425b8f8..e4501f6c7 100644 --- a/Aaru.Images/DiscFerret/Read.cs +++ b/Aaru.Images/DiscFerret/Read.cs @@ -47,10 +47,10 @@ public sealed partial class DiscFerret /// public ErrorNumber Open(IFilter imageFilter) { - byte[] magicB = new byte[4]; + var magicB = new byte[4]; Stream stream = imageFilter.GetDataForkStream(); stream.EnsureRead(magicB, 0, 4); - uint magic = BitConverter.ToUInt32(magicB, 0); + var magic = BitConverter.ToUInt32(magicB, 0); if(magic != DFI_MAGIC && magic != DFI_MAGIC2) return ErrorNumber.InvalidArgument; @@ -64,9 +64,9 @@ public sealed partial class DiscFerret { long thisOffset = stream.Position; - byte[] blk = new byte[Marshal.SizeOf()]; + var blk = new byte[Marshal.SizeOf()]; stream.EnsureRead(blk, 0, Marshal.SizeOf()); - BlockHeader blockHeader = Marshal.ByteArrayToStructureBigEndian(blk); + BlockHeader blockHeader = Marshal.ByteArrayToStructureBigEndianGenerated(blk); AaruLogging.Debug(MODULE_NAME, "block@{0}.cylinder = {1}", thisOffset, blockHeader.cylinder); diff --git a/Aaru.Images/DiscFerret/Structs.cs b/Aaru.Images/DiscFerret/Structs.cs index b73dc231f..1440ca3f0 100644 --- a/Aaru.Images/DiscFerret/Structs.cs +++ b/Aaru.Images/DiscFerret/Structs.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System.Runtime.InteropServices; +using Aaru.CommonTypes.Attributes; namespace Aaru.Images; @@ -39,12 +40,13 @@ public sealed partial class DiscFerret #region Nested type: BlockHeader [StructLayout(LayoutKind.Sequential, Pack = 1)] - readonly struct BlockHeader + [SwapEndian] + partial struct BlockHeader { - public readonly ushort cylinder; - public readonly ushort head; - public readonly ushort sector; - public readonly uint length; + public ushort cylinder; + public ushort head; + public ushort sector; + public uint length; } #endregion