Fix UB due to forming a reference to a packed struct member

This commit is contained in:
Jeremy Rifkin 2025-02-17 22:59:48 -06:00
parent 27924487dc
commit 6d41ea0135
No known key found for this signature in database
GPG Key ID: 19AA8270105E8EB4

View File

@ -41,7 +41,10 @@ namespace libdwarf {
constexpr bool trace_dwarf = false; constexpr bool trace_dwarf = false;
// sorted range entries for dies // sorted range entries for dies
template<typename T> template<
typename T,
typename std::enable_if<std::is_trivially_copyable<T>::value && sizeof(T) <= 16, int>::type = 0
>
class die_cache { class die_cache {
public: public:
struct die_handle { struct die_handle {
@ -95,7 +98,7 @@ namespace libdwarf {
struct die_and_data { struct die_and_data {
const die_object& die; const die_object& die;
const T& data; T data;
}; };
template<typename Ret = const die_object&> template<typename Ret = const die_object&>
auto make_lookup_result(typename std::vector<range_entry>::const_iterator vec_it) const auto make_lookup_result(typename std::vector<range_entry>::const_iterator vec_it) const