aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLexi Winter <lexi@hemlock.eden.le-fay.org>2025-03-26 12:19:58 +0000
committerLexi Winter <lexi@hemlock.eden.le-fay.org>2025-03-26 12:19:58 +0000
commitdb88e238262d7da5405f7d47db0c81c5fb89a13c (patch)
tree1897a0832a2ba575e55a6820ece1186957bf4b5b
parent7f5e5b3c38f520555e63ed346325b810d7a0757e (diff)
downloadlibnvxx-db88e238262d7da5405f7d47db0c81c5fb89a13c.tar.gz
libnvxx-db88e238262d7da5405f7d47db0c81c5fb89a13c.tar.bz2
add error handling for get_descriptor()
-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);