aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libnvxx/const_nv_list.cc7
-rw-r--r--libnvxx/tests/nvxx_basic.cc1
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);