diff --git a/libgnucash/backend/sql/gnc-sql-column-table-entry.hpp b/libgnucash/backend/sql/gnc-sql-column-table-entry.hpp index a079751a10..326ba62fb1 100644 --- a/libgnucash/backend/sql/gnc-sql-column-table-entry.hpp +++ b/libgnucash/backend/sql/gnc-sql-column-table-entry.hpp @@ -367,8 +367,26 @@ GncSqlColumnTableEntry::get_row_value_from_object(QofIdTypeConst obj_name, { QofAccessFunc getter = get_getter(obj_name); if (getter != nullptr) - result = reinterpret_cast((getter)(const_cast(pObject), + { + if constexpr (sizeof(T) >= sizeof(void*)) + result = reinterpret_cast((getter)(const_cast(pObject), nullptr)); + else + { + union converter + { + intptr_t whole; + uint32_t upper; + uint32_t lower; + }; + converter conv; + conv.whole = reinterpret_cast((getter)(const_cast(pObject), + nullptr)); + if (conv.upper) + throw std::runtime_error("Bits left over when converting pointer"); //crash out + result = conv.lower; + } + } } return result; }