From dc86ed1456ba5024c7bb5e70228aac3d699fda61 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 12 Feb 2026 13:04:37 -0500 Subject: [PATCH] Use accelerator table type --- SabreTools.Serialization/Extensions/PortableExecutable.cs | 7 ++++--- .../Wrappers/PortableExecutable.Printing.cs | 8 ++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/SabreTools.Serialization/Extensions/PortableExecutable.cs b/SabreTools.Serialization/Extensions/PortableExecutable.cs index d96a8029..b39ce9f1 100644 --- a/SabreTools.Serialization/Extensions/PortableExecutable.cs +++ b/SabreTools.Serialization/Extensions/PortableExecutable.cs @@ -157,7 +157,7 @@ namespace SabreTools.Data.Extensions /// /// Resource data entry to parse into an accelerator table resource /// A filled accelerator table resource on success, null on error - public static AcceleratorTableEntry[]? AsAcceleratorTableResource(this Models.PortableExecutable.Resource.DataEntry? entry) + public static AcceleratorTable? AsAcceleratorTableResource(this Models.PortableExecutable.Resource.DataEntry? entry) { // If we have data that's invalid for this resource type, we can't do anything if (entry?.Data is null || entry.Data.Length % 8 != 0) @@ -170,12 +170,13 @@ namespace SabreTools.Data.Extensions int offset = 0; // Create the output object - var table = new AcceleratorTableEntry[count]; + var table = new AcceleratorTable(); + table.Entries = new AcceleratorTableEntry[count]; // Read in the table for (int i = 0; i < count; i++) { - table[i] = ParseAcceleratorTableEntry(entry.Data, ref offset); + table.Entries[i] = ParseAcceleratorTableEntry(entry.Data, ref offset); } return table; diff --git a/SabreTools.Serialization/Wrappers/PortableExecutable.Printing.cs b/SabreTools.Serialization/Wrappers/PortableExecutable.Printing.cs index c9f1adf4..904f9d6c 100644 --- a/SabreTools.Serialization/Wrappers/PortableExecutable.Printing.cs +++ b/SabreTools.Serialization/Wrappers/PortableExecutable.Printing.cs @@ -1317,18 +1317,18 @@ namespace SabreTools.Serialization.Wrappers { string padding = new(' ', (level + 1) * 2); - AcceleratorTableEntry[]? acceleratorTable = null; + AcceleratorTable? acceleratorTable = null; try { acceleratorTable = entry.AsAcceleratorTableResource(); } catch { } - if (acceleratorTable is null) + if (acceleratorTable?.Entries is null) { builder.AppendLine($"{padding}Accelerator table resource found, but malformed"); return; } - for (int i = 0; i < acceleratorTable.Length; i++) + for (int i = 0; i < acceleratorTable.Entries.Length; i++) { - var acceleratorTableEntry = acceleratorTable[i]; + var acceleratorTableEntry = acceleratorTable.Entries[i]; builder.AppendLine($"{padding}Accelerator Table Entry {i}:"); builder.AppendLine($"{padding} Flags: {acceleratorTableEntry.Flags} (0x{acceleratorTableEntry.Flags:X})"); builder.AppendLine(acceleratorTableEntry.Ansi, $"{padding} Ansi");