diff options
| -rw-r--r-- | lld/include/lld/ReaderWriter/PECOFFLinkingContext.h | 2 | ||||
| -rw-r--r-- | lld/lib/Driver/WinLinkDriver.cpp | 2 | ||||
| -rw-r--r-- | lld/lib/ReaderWriter/PECOFF/PECOFFLinkingContext.cpp | 3 |
3 files changed, 3 insertions, 4 deletions
diff --git a/lld/include/lld/ReaderWriter/PECOFFLinkingContext.h b/lld/include/lld/ReaderWriter/PECOFFLinkingContext.h index 0683286144e..105b32bfff6 100644 --- a/lld/include/lld/ReaderWriter/PECOFFLinkingContext.h +++ b/lld/include/lld/ReaderWriter/PECOFFLinkingContext.h @@ -95,7 +95,7 @@ public: virtual ErrorOr<Reference::Kind> relocKindFromString(StringRef str) const; virtual ErrorOr<std::string> stringFromRelocKind(Reference::Kind kind) const; - StringRef allocateString(StringRef ref) { + StringRef allocateString(StringRef ref) const { char *x = _alloc.Allocate<char>(ref.size() + 1); memcpy(x, ref.data(), ref.size()); x[ref.size()] = '\0'; diff --git a/lld/lib/Driver/WinLinkDriver.cpp b/lld/lib/Driver/WinLinkDriver.cpp index d863aa73362..42c8b11f6c0 100644 --- a/lld/lib/Driver/WinLinkDriver.cpp +++ b/lld/lib/Driver/WinLinkDriver.cpp @@ -195,7 +195,7 @@ StringRef PECOFFFileNode::path(const LinkingContext &) const { if (_path.endswith(".lib")) return _ctx.searchLibraryFile(_path); if (llvm::sys::path::extension(_path).empty()) - return (_path.str() + ".obj"); + return (_ctx.allocateString(_path.str() + ".obj")); return _path; } diff --git a/lld/lib/ReaderWriter/PECOFF/PECOFFLinkingContext.cpp b/lld/lib/ReaderWriter/PECOFF/PECOFFLinkingContext.cpp index 9f0b1430c36..88440daf7a3 100644 --- a/lld/lib/ReaderWriter/PECOFF/PECOFFLinkingContext.cpp +++ b/lld/lib/ReaderWriter/PECOFF/PECOFFLinkingContext.cpp @@ -73,7 +73,7 @@ StringRef PECOFFLinkingContext::searchLibraryFile(StringRef filename) const { SmallString<128> path = dir; llvm::sys::path::append(path, filename); if (llvm::sys::fs::exists(path.str())) - return (*(new (_alloc) std::string(path.str()))); + return allocateString(path.str()); } return filename; } @@ -95,5 +95,4 @@ void PECOFFLinkingContext::addPasses(PassManager &pm) const { pm.add(std::unique_ptr<Pass>(new pecoff::IdataPass())); pm.add(std::unique_ptr<Pass>(new LayoutPass())); } - } // end namespace lld |

