From d08c1ddede75ed07749b1d0ed8f8b06ec743b505 Mon Sep 17 00:00:00 2001 From: Keichi Takahashi Date: Sun, 8 Mar 2020 19:01:19 +0900 Subject: [PATCH] Fix InSituMPI crash on big-endian platforms --- source/adios2/engine/insitumpi/InSituMPISchedules.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/source/adios2/engine/insitumpi/InSituMPISchedules.cpp b/source/adios2/engine/insitumpi/InSituMPISchedules.cpp index cab19547b1..a656549fa9 100644 --- a/source/adios2/engine/insitumpi/InSituMPISchedules.cpp +++ b/source/adios2/engine/insitumpi/InSituMPISchedules.cpp @@ -207,15 +207,16 @@ WriteScheduleMap DeserializeReadSchedule( LocalReadScheduleMap DeserializeReadSchedule(const std::vector &buffer) noexcept { + const bool isLittleEndian = helper::IsLittleEndian(); LocalReadScheduleMap map; size_t pos = 0; - int nVars = helper::ReadValue(buffer, pos); + int nVars = helper::ReadValue(buffer, pos, isLittleEndian); for (int i = 0; i < nVars; i++) { - int nameLen = helper::ReadValue(buffer, pos); + int nameLen = helper::ReadValue(buffer, pos, isLittleEndian); std::vector name(nameLen + 1, '\0'); helper::CopyFromBuffer(buffer, pos, name.data(), nameLen); - int nSubFileInfos = helper::ReadValue(buffer, pos); + int nSubFileInfos = helper::ReadValue(buffer, pos, isLittleEndian); std::vector sfis; sfis.reserve(nSubFileInfos); for (int j = 0; j < nSubFileInfos; j++) @@ -240,8 +241,9 @@ helper::SubFileInfo DeserializeSubFileInfo(const std::vector &buffer, Box DeserializeBoxDims(const std::vector &buffer, size_t &position) noexcept { + const bool isLittleEndian = helper::IsLittleEndian(); Box box; - int nDims = helper::ReadValue(buffer, position); + int nDims = helper::ReadValue(buffer, position, isLittleEndian); std::vector start(nDims); std::vector count(nDims); helper::CopyFromBuffer(buffer, position, start.data(), nDims);