- Notifications
You must be signed in to change notification settings - Fork14.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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
Passing RepositoryURL around as an optional reference triggeredstack-use-after-return complaints.
evelez7 commentedJul 15, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
@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.cppindex 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. |
evelez7 commentedJul 16, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
64c273a
intomainUh oh!
There was an error while loading.Please reload this page.
Passing RepositoryURL around as an optional reference triggered
stack-use-after-return complaints.