diff --git a/OSBindings/Mac/Clock SignalTests/ARMDecoderTests.mm b/OSBindings/Mac/Clock SignalTests/ARMDecoderTests.mm index 0503b437c..6b1d3193a 100644 --- a/OSBindings/Mac/Clock SignalTests/ARMDecoderTests.mm +++ b/OSBindings/Mac/Clock SignalTests/ARMDecoderTests.mm @@ -83,11 +83,15 @@ struct MemoryLedger { template bool read(uint32_t address, IntT &source, Mode, bool) { - if constexpr (std::is_same_v) { - address &= static_cast(~3); - } + const auto is_faulty = [&](uint32_t address) -> bool { + return + read_pointer == reads.size() || + reads[read_pointer].size != sizeof(IntT) || + reads[read_pointer].address != address; + }; - if(read_pointer == reads.size() || reads[read_pointer].size != sizeof(IntT) || reads[read_pointer].address != address) { + // As per writes; the test set sometimes forces alignment on the record, sometimes not... + if(is_faulty(address) && is_faulty(address & static_cast(~3))) { return false; } source = reads[read_pointer].value;