diff --git a/.clang-tidy b/.clang-tidy index aa9f598740..b06ea19dc6 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -11,7 +11,6 @@ Checks: > -cppcoreguidelines-avoid-do-while, -cppcoreguidelines-avoid-magic-numbers, -cppcoreguidelines-macro-usage, - -cppcoreguidelines-narrowing-conversions, -cppcoreguidelines-no-malloc, -cppcoreguidelines-non-private-member-variables-in-classes, -cppcoreguidelines-owning-memory, diff --git a/src/cpp_common/undirectedHasCostBG.cpp b/src/cpp_common/undirectedHasCostBG.cpp index b529c57b8f..5fc3cd6258 100644 --- a/src/cpp_common/undirectedHasCostBG.cpp +++ b/src/cpp_common/undirectedHasCostBG.cpp @@ -26,13 +26,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ #include "cpp_common/undirectedHasCostBG.hpp" - +#include #include #include #include #include #include - #include "c_types/iid_t_rt.h" #include "cpp_common/coordinate_t.hpp" #include "cpp_common/interruption.hpp" @@ -166,7 +165,15 @@ void UndirectedHasCostBG::insert_vertex(int64_t id) { try { if (has_vertex(id)) return; - auto v = add_vertex(m_id_to_V.size(), m_graph); + const auto vertex_count = m_id_to_V.size(); + const auto max_int = static_cast(std::numeric_limits::max()); + + if (vertex_count > max_int) { + throw std::overflow_error("vertex index exceeds int range"); + } + + auto v = add_vertex(static_cast(vertex_count), m_graph); + m_id_to_V.insert(std::make_pair(id, v)); m_V_to_id.insert(std::make_pair(v, id)); } catch (...) {