diff --git a/libgnucash/engine/gnc-timezone.cpp b/libgnucash/engine/gnc-timezone.cpp index a150d619e9..06aedb2974 100644 --- a/libgnucash/engine/gnc-timezone.cpp +++ b/libgnucash/engine/gnc-timezone.cpp @@ -446,15 +446,23 @@ namespace IANAParser auto info_index = info_index_zero + index; if (transition_size == 4) { - transitions.push_back( - {*(endian_swap(reinterpret_cast(&fileblock[fb_index]))), - static_cast(fileblock[info_index])}); + int32_t transition_time; + // Ensure correct alignment for ARM. + memcpy(&transition_time, + endian_swap(reinterpret_cast(&fileblock[fb_index])), + sizeof(int32_t)); + auto info = static_cast(fileblock[info_index]); + transitions.push_back({transition_time, info}); } else { - transitions.push_back( - {*(endian_swap(reinterpret_cast(&fileblock[fb_index]))), - static_cast(fileblock[info_index])}); + int64_t transition_time; + // Ensure correct alignment for ARM. + memcpy(&transition_time, + endian_swap(reinterpret_cast(&fileblock[fb_index])), + sizeof(int64_t)); + auto info = static_cast(fileblock[info_index]); + transitions.push_back({transition_time, info}); } }