X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fbinding%2Fdevice.cpp;fp=pv%2Fbinding%2Fdevice.cpp;h=458a9d69a71d64c2bda65cb24f3ad0b85e24394e;hp=401644fd0672fa616c5c21586f619590e8b1cff1;hb=a9627352f283dd4f83906dc1710a1d9d327fbe57;hpb=0e206885e6ec4360fd06e336b12f01d605d926f7 diff --git a/pv/binding/device.cpp b/pv/binding/device.cpp index 401644fd..458a9d69 100644 --- a/pv/binding/device.cpp +++ b/pv/binding/device.cpp @@ -147,20 +147,26 @@ void Device::bind_enum(const QString &name, const QString &desc, Property::Getter getter, Property::Setter setter, function printer) { - Glib::VariantBase gvar; - vector< pair > values; - assert(configurable_); if (!capabilities.count(Capability::LIST)) return; - Glib::VariantIter iter(configurable_->config_list(key)); - while ((iter.next_value(gvar))) - values.push_back(make_pair(gvar, printer(gvar))); + try { + Glib::VariantContainerBase gvar = configurable_->config_list(key); + Glib::VariantIter iter(gvar); + + vector< pair > values; + while ((iter.next_value(gvar))) + values.push_back(make_pair(gvar, printer(gvar))); + + properties_.push_back(shared_ptr(new Enum(name, desc, values, + getter, setter))); - properties_.push_back(shared_ptr(new Enum(name, desc, values, - getter, setter))); + } catch (sigrok::Error& e) { + qDebug() << "Error: Listing device key" << name << "failed!"; + return; + } } void Device::bind_int(const QString &name, const QString &desc, QString suffix,