From cd704cb6c4290643f232dc7e22b938705909dd6f Mon Sep 17 00:00:00 2001 From: Eric Beckmann Date: Mon, 8 May 2017 02:47:42 +0000 Subject: Hopefully one last commit to fix this patch, addresses string reference issues. llvm-svn: 302401 --- llvm/tools/llvm-readobj/COFFDumper.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'llvm/tools/llvm-readobj') diff --git a/llvm/tools/llvm-readobj/COFFDumper.cpp b/llvm/tools/llvm-readobj/COFFDumper.cpp index 64fd60ea209..049af2c4f07 100644 --- a/llvm/tools/llvm-readobj/COFFDumper.cpp +++ b/llvm/tools/llvm-readobj/COFFDumper.cpp @@ -44,6 +44,7 @@ #include "llvm/Support/BinaryByteStream.h" #include "llvm/Support/BinaryStreamReader.h" #include "llvm/Support/COFF.h" +#include "llvm/Support/ConvertUTF.h" #include "llvm/Support/Casting.h" #include "llvm/Support/Compiler.h" #include "llvm/Support/DataExtractor.h" @@ -1560,9 +1561,12 @@ void COFFDumper::printResourceDirectoryTable( SmallString<20> IDStr; raw_svector_ostream OS(IDStr); if (i < Table.NumberOfNameEntries) { - StringRef EntryNameString = unwrapOrError(RSF.getEntryNameString(Entry)); + ArrayRef RawEntryNameString = unwrapOrError(RSF.getEntryNameString(Entry)); + std::string EntryNameString; + if (!llvm::convertUTF16ToUTF8String(RawEntryNameString, EntryNameString)) + error(object_error::parse_failed); OS << ": "; - OS << EntryNameString.str(); + OS << EntryNameString; } else { if (Level == "Type") { ScopedPrinter Printer(OS); @@ -1594,7 +1598,7 @@ void COFFDumper::printResourceDirectoryTable( ErrorOr COFFDumper::getResourceDirectoryTableEntry(const coff_resource_dir_table &Table, uint32_t Index) { - if (Index >= Table.NumberOfNameEntries + Table.NumberOfIDEntries) + if (Index >= (uint32_t)(Table.NumberOfNameEntries + Table.NumberOfIDEntries)) return object_error::parse_failed; auto TablePtr = reinterpret_cast(&Table + 1); return TablePtr[Index]; -- cgit v1.2.3