From db88e238262d7da5405f7d47db0c81c5fb89a13c Mon Sep 17 00:00:00 2001 From: Lexi Winter Date: Wed, 26 Mar 2025 12:19:58 +0000 Subject: add error handling for get_descriptor() --- libnvxx/const_nv_list.cc | 7 ++++++- libnvxx/tests/nvxx_basic.cc | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) 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 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); -- cgit v1.2.3