From 1f6ba5d734218663c7406966e2ae93709a7a4c89 Mon Sep 17 00:00:00 2001 From: Tomasz Michalak Date: Mon, 8 Apr 2019 10:11:40 +0200 Subject: [PATCH] xc7series: fix bug with missing empty frames Signed-off-by: Tomasz Michalak --- lib/xilinx/xc7series/frames.cc | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/lib/xilinx/xc7series/frames.cc b/lib/xilinx/xc7series/frames.cc index f6accecb..e53f1d82 100644 --- a/lib/xilinx/xc7series/frames.cc +++ b/lib/xilinx/xc7series/frames.cc @@ -63,22 +63,20 @@ int Frames::readFrames(const std::string& frm_file_str) { } void Frames::addMissingFrames(const absl::optional& part) { - auto current_frame_address = frames_data_.begin()->first; - auto next_frame_address = - part->GetNextFrameAddress(current_frame_address); - while (next_frame_address) { - current_frame_address = *next_frame_address; - auto iter = frames_data_.find(current_frame_address); + auto current_frame_address = + absl::optional(FrameAddress(0)); + do { + auto iter = frames_data_.find(*current_frame_address); if (iter == frames_data_.end()) { FrameData frame_data(101, 0); // TODO make sure if this is needed updateECC(frame_data); frames_data_.insert(std::pair( - current_frame_address, frame_data)); + *current_frame_address, frame_data)); } - next_frame_address = - part->GetNextFrameAddress(current_frame_address); - } + current_frame_address = + part->GetNextFrameAddress(*current_frame_address); + } while (current_frame_address); } void Frames::updateECC(FrameData& data) {