-
Notifications
You must be signed in to change notification settings - Fork 14.5k
[clang-doc] fix ASan complaints from passing RepositoryURL as reference #148923
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Passing RepositoryURL around as an optional reference triggered stack-use-after-return complaints.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
@llvm/pr-subscribers-clang-tools-extra Author: Erick Velez (evelez7) ChangesPassing RepositoryURL around as an optional reference triggered Full diff: https://github.com/llvm/llvm-project/pull/148923.diff 1 Files Affected:
diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp b/clang-tools-extra/clang-doc/JSONGenerator.cpp
index 6fdc7196e9095..cc4c68346ec53 100644
--- a/clang-tools-extra/clang-doc/JSONGenerator.cpp
+++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp
@@ -45,7 +45,7 @@ static auto SerializeReferenceLambda = [](const auto &Ref, Object &Object) {
static json::Object
serializeLocation(const Location &Loc,
- const std::optional<StringRef> &RepositoryUrl) {
+ const std::optional<StringRef> RepositoryUrl) {
Object LocationObj = Object();
LocationObj["LineNumber"] = Loc.StartLineNumber;
LocationObj["Filename"] = Loc.Filename;
@@ -169,7 +169,7 @@ static json::Value serializeComment(const CommentInfo &I) {
static void
serializeCommonAttributes(const Info &I, json::Object &Obj,
- const std::optional<StringRef> &RepositoryUrl) {
+ const std::optional<StringRef> RepositoryUrl) {
Obj["Name"] = I.Name;
Obj["USR"] = toHex(toStringRef(I.USR));
@@ -211,9 +211,9 @@ static void serializeReference(const Reference &Ref, Object &ReferenceObj) {
// differently. Only enums, records, and typedefs are handled here.
static void
serializeCommonChildren(const ScopeChildren &Children, json::Object &Obj,
- const std::optional<StringRef> &RepositoryUrl) {
- static auto SerializeInfo = [&RepositoryUrl](const auto &Info,
- Object &Object) {
+ const std::optional<StringRef> RepositoryUrl) {
+ static auto SerializeInfo = [RepositoryUrl](const auto &Info,
+ Object &Object) {
serializeInfo(Info, Object, RepositoryUrl);
};
@@ -304,7 +304,7 @@ static void serializeInfo(const FieldTypeInfo &I, Object &Obj) {
}
static void serializeInfo(const FunctionInfo &F, json::Object &Obj,
- const std::optional<StringRef> &RepositoryURL) {
+ const std::optional<StringRef> RepositoryURL) {
serializeCommonAttributes(F, Obj, RepositoryURL);
Obj["IsStatic"] = F.IsStatic;
@@ -459,7 +459,7 @@ static void serializeInfo(const RecordInfo &I, json::Object &Obj,
}
static void serializeInfo(const VarInfo &I, json::Object &Obj,
- const std::optional<StringRef> &RepositoryUrl) {
+ const std::optional<StringRef> RepositoryUrl) {
serializeCommonAttributes(I, Obj, RepositoryUrl);
Obj["IsStatic"] = I.IsStatic;
auto TypeObj = Object();
@@ -468,15 +468,15 @@ static void serializeInfo(const VarInfo &I, json::Object &Obj,
}
static void serializeInfo(const NamespaceInfo &I, json::Object &Obj,
- const std::optional<StringRef> &RepositoryUrl) {
+ const std::optional<StringRef> RepositoryUrl) {
serializeCommonAttributes(I, Obj, RepositoryUrl);
if (!I.Children.Namespaces.empty())
serializeArray(I.Children.Namespaces, Obj, "Namespaces",
SerializeReferenceLambda);
- static auto SerializeInfo = [&RepositoryUrl](const auto &Info,
- Object &Object) {
+ static auto SerializeInfo = [RepositoryUrl](const auto &Info,
+ Object &Object) {
serializeInfo(Info, Object, RepositoryUrl);
};
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, assuming the complaint is from the optional and not the StringRef.
Yeah the complaint was from the optional's bool operator being checked. |
Passing RepositoryURL around as an optional reference triggered
stack-use-after-return complaints.