From eb31c238473de0784ec57b9782e11082613a7a7a Mon Sep 17 00:00:00 2001 From: Soeren Apel Date: Sun, 18 Sep 2022 22:28:51 +0200 Subject: [PATCH] Fix #1663 by handling the case where annotations aren't assigned a row --- pv/data/decode/row.cpp | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/pv/data/decode/row.cpp b/pv/data/decode/row.cpp index d127a2ea..6212c921 100644 --- a/pv/data/decode/row.cpp +++ b/pv/data/decode/row.cpp @@ -18,6 +18,7 @@ */ #include +#include #include "decoder.hpp" #include "row.hpp" @@ -149,17 +150,31 @@ const QColor Row::color() const const QColor Row::get_class_color(uint32_t ann_class_id) const { - return ann_class_color_.at(ann_class_id); + try { + return ann_class_color_.at(ann_class_id); + } catch (std::out_of_range &e) { + qWarning() << "Warning: annotation type" << decoder_->get_ann_class_by_id(ann_class_id)->name + << "(" << ann_class_id << ")" << "not assigned to any annotation row!"; + return QColor(20, 20, 20); + } } const QColor Row::get_bright_class_color(uint32_t ann_class_id) const { - return ann_bright_class_color_.at(ann_class_id); + try { + return ann_bright_class_color_.at(ann_class_id); + } catch (std::out_of_range &e) { + return QColor(20, 20, 20); + } } const QColor Row::get_dark_class_color(uint32_t ann_class_id) const { - return ann_dark_class_color_.at(ann_class_id); + try { + return ann_dark_class_color_.at(ann_class_id); + } catch (std::out_of_range &e) { + return QColor(20, 20, 20); + } } bool Row::has_hidden_classes() const -- 2.30.2