gnucash maint: Bug 798500 - FTBFS (tests failure) on armhf
John Ralls
jralls at code.gnucash.org
Tue Apr 5 14:45:36 EDT 2022
Updated via https://github.com/Gnucash/gnucash/commit/26b009c0 (commit)
from https://github.com/Gnucash/gnucash/commit/3125352d (commit)
commit 26b009c0f4839b6ea9c89716613ed2033fe165d3
Author: John Ralls <jralls at ceridwen.us>
Date: Sat Apr 2 16:41:52 2022 -0700
Bug 798500 - FTBFS (tests failure) on armhf
Ensure the transition_times are correctly aligned for their sizes
before attempting to copy them into the transitions vector.
diff --git a/libgnucash/engine/gnc-timezone.cpp b/libgnucash/engine/gnc-timezone.cpp
index a150d619e..06aedb297 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<int32_t*>(&fileblock[fb_index]))),
- static_cast<uint8_t>(fileblock[info_index])});
+ int32_t transition_time;
+ // Ensure correct alignment for ARM.
+ memcpy(&transition_time,
+ endian_swap(reinterpret_cast<int32_t*>(&fileblock[fb_index])),
+ sizeof(int32_t));
+ auto info = static_cast<uint8_t>(fileblock[info_index]);
+ transitions.push_back({transition_time, info});
}
else
{
- transitions.push_back(
- {*(endian_swap(reinterpret_cast<int64_t*>(&fileblock[fb_index]))),
- static_cast<uint8_t>(fileblock[info_index])});
+ int64_t transition_time;
+ // Ensure correct alignment for ARM.
+ memcpy(&transition_time,
+ endian_swap(reinterpret_cast<int64_t*>(&fileblock[fb_index])),
+ sizeof(int64_t));
+ auto info = static_cast<uint8_t>(fileblock[info_index]);
+ transitions.push_back({transition_time, info});
}
}
Summary of changes:
libgnucash/engine/gnc-timezone.cpp | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
More information about the gnucash-changes
mailing list