diff options
| author | Lexi Winter <lexi@hemlock.eden.le-fay.org> | 2025-03-26 12:19:58 +0000 |
|---|---|---|
| committer | Lexi Winter <lexi@hemlock.eden.le-fay.org> | 2025-03-26 12:19:58 +0000 |
| commit | db88e238262d7da5405f7d47db0c81c5fb89a13c (patch) | |
| tree | 1897a0832a2ba575e55a6820ece1186957bf4b5b | |
| parent | 7f5e5b3c38f520555e63ed346325b810d7a0757e (diff) | |
| download | libnvxx-db88e238262d7da5405f7d47db0c81c5fb89a13c.tar.gz libnvxx-db88e238262d7da5405f7d47db0c81c5fb89a13c.tar.bz2 | |
add error handling for get_descriptor()
| -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); |
