Author: Donát Nagy Date: 2023-06-30T17:15:43+02:00 New Revision: 1d75b18843fbca52655e240a120b5fdeeef17c0e
URL: https://github.com/llvm/llvm-project/commit/1d75b18843fbca52655e240a120b5fdeeef17c0e DIFF: https://github.com/llvm/llvm-project/commit/1d75b18843fbca52655e240a120b5fdeeef17c0e.diff LOG: [analyzer][NFC] Fix dangling StringRef in barely used code CheckerContext::getNoteTag has a shorthand version that takes a plain 'StringRef Note' instead of a lambda that calculates the note. The old implementation of this method was incorrect because it created a lambda that captured the StringRef, which was dereferenced much later, when the NoteTags were visited. In the current codebase this does not cause errors because this method is called only once, and there the `Note` argument is a string literal that remains valid. However, I tried to use this method in a checker that I was prototyping, and there it printed random memory junk (instead of the message that I composed in a local variable). Differential Revision: https://reviews.llvm.org/D153889 Added: Modified: clang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h Removed: ################################################################################ diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h index 9bd5a802d5d64e..9923c41e6ad2d1 100644 --- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h +++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h @@ -316,8 +316,8 @@ class CheckerContext { /// bug path significantly shorter. const NoteTag *getNoteTag(StringRef Note, bool IsPrunable = false) { return getNoteTag( - [Note](BugReporterContext &, - PathSensitiveBugReport &) { return std::string(Note); }, + [Note = std::string(Note)](BugReporterContext &, + PathSensitiveBugReport &) { return Note; }, IsPrunable); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits