X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=bindings%2Fcxx%2FConfigKey_methods.cpp;h=54af62e804e76f2d8b3c7c0d628b9e17cc3a747c;hb=c7b17bcba3751c7849229089cce8773bb4355be7;hp=e3b67c328104740cd00f778e8b0b910aea13886a;hpb=6ec6c43b4738dbc7091f4a49a4ec80ea6102cb52;p=libsigrok.git diff --git a/bindings/cxx/ConfigKey_methods.cpp b/bindings/cxx/ConfigKey_methods.cpp index e3b67c32..54af62e8 100644 --- a/bindings/cxx/ConfigKey_methods.cpp +++ b/bindings/cxx/ConfigKey_methods.cpp @@ -1,6 +1,6 @@ const DataType *ConfigKey::data_type() const { - const struct sr_key_info *info = sr_key_info_get(SR_KEY_CONFIG, _id); + const struct sr_key_info *info = sr_key_info_get(SR_KEY_CONFIG, id()); if (!info) throw Error(SR_ERR_NA); return DataType::get(info->datatype); @@ -8,7 +8,7 @@ const DataType *ConfigKey::data_type() const string ConfigKey::identifier() const { - const struct sr_key_info *info = sr_key_info_get(SR_KEY_CONFIG, _id); + const struct sr_key_info *info = sr_key_info_get(SR_KEY_CONFIG, id()); if (!info) throw Error(SR_ERR_NA); return valid_string(info->id); @@ -16,7 +16,7 @@ string ConfigKey::identifier() const string ConfigKey::description() const { - const struct sr_key_info *info = sr_key_info_get(SR_KEY_CONFIG, _id); + const struct sr_key_info *info = sr_key_info_get(SR_KEY_CONFIG, id()); if (!info) throw Error(SR_ERR_NA); return valid_string(info->name); @@ -88,7 +88,11 @@ Glib::VariantBase ConfigKey::parse_string(string value) const variant = g_variant_new_boolean(sr_parse_boolstring(value.c_str())); break; case SR_T_FLOAT: - variant = g_variant_new_double(stod(value)); + try { + variant = g_variant_new_double(stod(value)); + } catch (invalid_argument) { + throw Error(SR_ERR_ARG); + } break; case SR_T_RATIONAL_PERIOD: check(sr_parse_period(value.c_str(), &p, &q)); @@ -99,7 +103,11 @@ Glib::VariantBase ConfigKey::parse_string(string value) const variant = g_variant_new("(tt)", p, q); break; case SR_T_INT32: - variant = g_variant_new_int32(stoi(value)); + try { + variant = g_variant_new_int32(stoi(value)); + } catch (invalid_argument) { + throw Error(SR_ERR_ARG); + } break; default: throw Error(SR_ERR_BUG);