[PATCH] D55765: Fix use-after-free bug in Tooling.
Yitzhak Mandelbaum via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Dec 17 08:03:11 PST 2018
ymandel updated this revision to Diff 178468.
ymandel added a comment.
Change buildAST functions to take a StringRef instead of a Twine.
In practice, code is almost never constructed on the fly using a Twine, so StringRef is simpler and avoids needing a copy when constructing the MemBuffer.
Repository:
rC Clang
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D55765/new/
https://reviews.llvm.org/D55765
Files:
lib/Tooling/Tooling.cpp
Index: lib/Tooling/Tooling.cpp
===================================================================
--- lib/Tooling/Tooling.cpp
+++ lib/Tooling/Tooling.cpp
@@ -581,7 +581,7 @@
}
std::unique_ptr<ASTUnit> buildASTFromCodeWithArgs(
- const Twine &Code, const std::vector<std::string> &Args,
+ StringRef Code, const std::vector<std::string> &Args,
const Twine &FileName, const Twine &ToolName,
std::shared_ptr<PCHContainerOperations> PCHContainerOps,
ArgumentsAdjuster Adjuster) {
@@ -602,10 +602,8 @@
getSyntaxOnlyToolArgs(ToolName, Adjuster(Args, FileNameRef), FileNameRef),
&Action, Files.get(), std::move(PCHContainerOps));
- SmallString<1024> CodeStorage;
InMemoryFileSystem->addFile(FileNameRef, 0,
- llvm::MemoryBuffer::getMemBuffer(
- Code.toNullTerminatedStringRef(CodeStorage)));
+ llvm::MemoryBuffer::getMemBufferCopy(Code));
if (!Invocation.run())
return nullptr;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D55765.178468.patch
Type: text/x-patch
Size: 1017 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20181217/0b09819c/attachment.bin>
More information about the cfe-commits
mailing list