From e3abbc712beafae9c82beebb4150bf74c42ac05b Mon Sep 17 00:00:00 2001 From: Henry Sternberg Date: Thu, 8 Jan 2026 16:09:21 +0000 Subject: [PATCH] [routing] Fix crash on 32-bit devices with conditional access The deserialization of conditional road access data was using size_t which is 8 bytes on 64-bit (where maps are generated) but only 4 bytes on 32-bit devices. This caused stream misalignment and eventual std::length_error when garbage data was interpreted as a huge vector size. Fix by using uint64_t to always read 8 bytes, matching what 64-bit build servers write. Signed-off-by: Henry Sternberg --- libs/routing/road_access_serialization.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/routing/road_access_serialization.hpp b/libs/routing/road_access_serialization.hpp index 3e06b8c0b..d0913f66e 100644 --- a/libs/routing/road_access_serialization.hpp +++ b/libs/routing/road_access_serialization.hpp @@ -458,7 +458,7 @@ private: positionsAccessConditional.clear(); auto openingHoursDeserializer = GetOpeningHoursSerDesForRouting(); - auto const size = ReadPrimitiveFromSource(src); + auto const size = ReadPrimitiveFromSource(src); positionsAccessConditional.reserve(size); uint32_t prevFeatureId = 0;