From 2d7a4fe5f0366a965a651acfe416509e588ea635 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Tue, 17 Oct 2017 22:12:04 -0400 Subject: [PATCH] Switches the MFM shifter to unsigned accumulation. Since left shifting signed numbers is undefined behaviour. --- Storage/Disk/Encodings/MFM/Shifter.cpp | 2 +- Storage/Disk/Encodings/MFM/Shifter.hpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Storage/Disk/Encodings/MFM/Shifter.cpp b/Storage/Disk/Encodings/MFM/Shifter.cpp index 2c4437e3b..c0dc25803 100644 --- a/Storage/Disk/Encodings/MFM/Shifter.cpp +++ b/Storage/Disk/Encodings/MFM/Shifter.cpp @@ -24,7 +24,7 @@ void Shifter::set_should_obey_syncs(bool should_obey_syncs) { } void Shifter::add_input_bit(int value) { - shift_register_ = (shift_register_ << 1) | value; + shift_register_ = (shift_register_ << 1) | static_cast(value); bits_since_token_++; token_ = Token::None; diff --git a/Storage/Disk/Encodings/MFM/Shifter.hpp b/Storage/Disk/Encodings/MFM/Shifter.hpp index 54b315b3e..5ceca2edd 100644 --- a/Storage/Disk/Encodings/MFM/Shifter.hpp +++ b/Storage/Disk/Encodings/MFM/Shifter.hpp @@ -40,10 +40,10 @@ class Shifter { private: // Bit stream input state int bits_since_token_ = 0; - int shift_register_ = 0; + unsigned int shift_register_ = 0; bool is_awaiting_marker_value_ = false; - bool should_obey_syncs_; - Token token_; + bool should_obey_syncs_ = true; + Token token_ = None; // input configuration bool is_double_density_ = false;