From 68874b6080ec269ff553ee0620826fda35a389a9 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Mon, 5 Sep 2016 17:53:57 -0400 Subject: [PATCH] Fixed accidental implicit assumption that Acorn files will be at least two blocks. --- StaticAnalyser/Acorn/Tape.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/StaticAnalyser/Acorn/Tape.cpp b/StaticAnalyser/Acorn/Tape.cpp index 2a814ff2a..7d342fa62 100644 --- a/StaticAnalyser/Acorn/Tape.cpp +++ b/StaticAnalyser/Acorn/Tape.cpp @@ -51,7 +51,7 @@ template class TapeParser { private: virtual std::unique_ptr get_wave_type_for_pulse(Storage::Tape::Tape::Pulse) = 0; - virtual std::unique_ptr dequeue_next_symbol(std::deque _wave_queue) = 0; + virtual std::unique_ptr dequeue_next_symbol(std::deque &_wave_queue) = 0; std::deque _wave_queue; std::shared_ptr _tape; }; @@ -131,7 +131,7 @@ class Acorn1200BaudTapeParser: public TapeParser { return std::unique_ptr(new WaveType(wave_type)); } - std::unique_ptr dequeue_next_symbol(std::deque _wave_queue) + std::unique_ptr dequeue_next_symbol(std::deque &_wave_queue) { while(_wave_queue.size() && _wave_queue.front() == WaveType::Unrecognised) { @@ -254,13 +254,11 @@ std::unique_ptr GetNextFile(std::deque &chunks) // accumulate chunks for as long as block number is sequential and the end-of-file bit isn't set std::unique_ptr file(new File); - uint16_t block_number = chunks.front().block_number; - file->chunks.push_back(chunks.front()); - chunks.pop_front(); + uint16_t block_number = 0; while(chunks.size()) { - if(chunks.front().block_number != block_number + 1) return nullptr; + if(chunks.front().block_number != block_number) return nullptr; bool was_last = chunks.front().block_flag & 0x80; file->chunks.push_back(chunks.front());