From: Soeren Apel Date: Sun, 18 Sep 2022 20:28:51 +0000 (+0200) Subject: Fix #1663 by handling the case where annotations aren't assigned a row X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=eb31c238473de0784ec57b9782e11082613a7a7a;p=pulseview.git Fix #1663 by handling the case where annotations aren't assigned a row --- 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