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