From: Zachary Turner Date: Fri, 6 Oct 2017 23:21:43 +0000 (+0000) Subject: [llvm-rc] Fix some endianness errors. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=88aa4b2a22cada945b115c9792265b308fc28213;p=llvm [llvm-rc] Fix some endianness errors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315128 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/llvm-rc/ResourceFileWriter.cpp b/tools/llvm-rc/ResourceFileWriter.cpp index 8b234ae96d6..8b7cd92c053 100644 --- a/tools/llvm-rc/ResourceFileWriter.cpp +++ b/tools/llvm-rc/ResourceFileWriter.cpp @@ -166,7 +166,9 @@ static Error processString(StringRef Str, NullHandlingMethod NullHandler, } } - Result.push_back(Char); + // Make sure to write little-endian strings, regardless of the host + // byte-order. + Result.push_back(endian::byte_swap(Char, little)); return Error::success(); }; @@ -347,9 +349,9 @@ Error ResourceFileWriter::writeIntOrString(const IntOrString &Value) { void ResourceFileWriter::writeRCInt(RCInt Value) { if (Value.isLong()) - writeObject((uint32_t)Value); + writeInt(Value); else - writeObject((uint16_t)Value); + writeInt(Value); } Error ResourceFileWriter::appendFile(StringRef Filename) { @@ -776,7 +778,7 @@ Error ResourceFileWriter::writeIconOrCursorGroupBody(const RCResource *Base) { writeObject(Res->Header); for (auto Item : Res->ItemEntries) { writeObject(Item); - writeObject(ulittle16_t(IconCursorID++)); + writeInt(IconCursorID++); } return Error::success(); } @@ -1179,9 +1181,9 @@ Error ResourceFileWriter::writeStringTableBundleBody(const RCResource *Base) { Data.push_back('\0'); RETURN_IF_ERROR( checkNumberFits(Data.size(), "STRINGTABLE string size")); - writeObject(ulittle16_t(Data.size())); + writeInt(Data.size()); for (auto Char : Data) - writeObject(ulittle16_t(Char)); + writeInt(Char); } return Error::success(); } @@ -1227,13 +1229,13 @@ Error ResourceFileWriter::writeUserDefinedBody(const RCResource *Base) { for (auto Ch : ProcessedString) { if (IsLongString) { - writeObject(ulittle16_t(Ch)); + writeInt(Ch); continue; } RETURN_IF_ERROR(checkNumberFits( Ch, "Character in narrow string in user-defined resoutce")); - writeObject(uint8_t(Ch)); + writeInt(Ch); } } @@ -1369,9 +1371,9 @@ Error ResourceFileWriter::writeVersionInfoBody(const RCResource *Base) { } FixedInfo; // First, VS_VERSIONINFO. - auto LengthLoc = writeObject(0); - writeObject(ulittle16_t(sizeof(FixedInfo))); - writeObject(ulittle16_t(0)); + auto LengthLoc = writeInt(0); + writeInt(sizeof(FixedInfo)); + writeInt(0); cantFail(writeCString("VS_VERSION_INFO")); padStream(sizeof(uint32_t));