diff options
author | Zachary Turner <zturner@google.com> | 2017-10-06 23:21:43 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2017-10-06 23:21:43 +0000 |
commit | b12792a4c0a31bec7977d6297ca89922400d42e2 (patch) | |
tree | 909446df510876bc252b1802d83ef443ee46b1f8 /llvm/tools/llvm-rc/ResourceFileWriter.cpp | |
parent | ae2e3a44d29f1f03faf730fffe8de386eaa0ade1 (diff) | |
download | bcm5719-llvm-b12792a4c0a31bec7977d6297ca89922400d42e2.tar.gz bcm5719-llvm-b12792a4c0a31bec7977d6297ca89922400d42e2.zip |
[llvm-rc] Fix some endianness errors.
llvm-svn: 315128
Diffstat (limited to 'llvm/tools/llvm-rc/ResourceFileWriter.cpp')
-rw-r--r-- | llvm/tools/llvm-rc/ResourceFileWriter.cpp | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/llvm/tools/llvm-rc/ResourceFileWriter.cpp b/llvm/tools/llvm-rc/ResourceFileWriter.cpp index 8b234ae96d6..8b7cd92c053 100644 --- a/llvm/tools/llvm-rc/ResourceFileWriter.cpp +++ b/llvm/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<uint32_t>(Value); else - writeObject((uint16_t)Value); + writeInt<uint16_t>(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<uint16_t>(Data.size(), "STRINGTABLE string size")); - writeObject(ulittle16_t(Data.size())); + writeInt<uint16_t>(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<uint8_t>( Ch, "Character in narrow string in user-defined resoutce")); - writeObject(uint8_t(Ch)); + writeInt<uint8_t>(Ch); } } @@ -1369,9 +1371,9 @@ Error ResourceFileWriter::writeVersionInfoBody(const RCResource *Base) { } FixedInfo; // First, VS_VERSIONINFO. - auto LengthLoc = writeObject<uint16_t>(0); - writeObject(ulittle16_t(sizeof(FixedInfo))); - writeObject(ulittle16_t(0)); + auto LengthLoc = writeInt<uint16_t>(0); + writeInt<uint16_t>(sizeof(FixedInfo)); + writeInt<uint16_t>(0); cantFail(writeCString("VS_VERSION_INFO")); padStream(sizeof(uint32_t)); |