Fix r357749 for big-endian architectures

We need to read the strings from the minidump files as little-endian,
regardless of the host byte order.

I definitely remember thinking about this case while writing the patch
(and in fact, I have implemented that for the "write" case), but somehow
I have ended up not implementing the byte swapping when reading the
data. This adds the necessary byte-swapping and should hopefully fix
test failures on big-endian bots.

llvm-svn: 357754
This commit is contained in:
Pavel Labath 2019-04-05 08:43:54 +00:00
parent 92db30fc00
commit ebdc698dbc
1 changed files with 6 additions and 2 deletions

View File

@ -38,12 +38,16 @@ Expected<std::string> MinidumpFile::getString(size_t Offset) const {
return "";
Offset += sizeof(support::ulittle32_t);
auto ExpectedData = getDataSliceAs<UTF16>(getData(), Offset, Size);
auto ExpectedData =
getDataSliceAs<support::ulittle16_t>(getData(), Offset, Size);
if (!ExpectedData)
return ExpectedData.takeError();
SmallVector<UTF16, 32> WStr(Size);
copy(*ExpectedData, WStr.begin());
std::string Result;
if (!convertUTF16ToUTF8String(*ExpectedData, Result))
if (!convertUTF16ToUTF8String(WStr, Result))
return createError("String decoding failed");
return Result;