diff options
| -rw-r--r-- | libnvxx/const_nv_list.cc | 7 | ||||
| -rw-r--r-- | libnvxx/tests/nvxx_basic.cc | 1 |
2 files changed, 7 insertions, 1 deletions
diff --git a/libnvxx/const_nv_list.cc b/libnvxx/const_nv_list.cc index 0ae3130..1ca63d8 100644 --- a/libnvxx/const_nv_list.cc +++ b/libnvxx/const_nv_list.cc @@ -334,7 +334,12 @@ __const_nv_list::get_nvlist_array(std::string_view key) const int __const_nv_list::get_descriptor(std::string_view key) const { - return ::nvlist_get_descriptor(__m_nv, std::string(key).c_str()); + auto skey = std::string(key); + + if (!::nvlist_exists_descriptor(__m_nv, skey.c_str())) + throw nv_key_not_found(skey); + + return ::nvlist_get_descriptor(__m_nv, skey.c_str()); } std::span<int const> diff --git a/libnvxx/tests/nvxx_basic.cc b/libnvxx/tests/nvxx_basic.cc index 8950654..9640d33 100644 --- a/libnvxx/tests/nvxx_basic.cc +++ b/libnvxx/tests/nvxx_basic.cc @@ -900,6 +900,7 @@ ATF_INIT_TEST_CASES(tcs) ATF_ADD_TEST_CASE(tcs, nvxx_add_descriptor); ATF_ADD_TEST_CASE(tcs, nvxx_add_duplicate_descriptor); + ATF_ADD_TEST_CASE(tcs, nvxx_get_nonexistent_descriptor); ATF_ADD_TEST_CASE(tcs, nvxx_add_binary); ATF_ADD_TEST_CASE(tcs, nvxx_add_duplicate_binary); |
