Skip to content

Commit 42885d6

Browse files
committed
Trim NULL characters
1 parent f64e93f commit 42885d6

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

clang-tools-extra/clang-tidy/modernize/UseDesignatedInitializersCheck.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,10 @@ struct Designators {
4747
const auto Result = Designators.find(Location);
4848
if (Result == Designators.end())
4949
return {};
50-
return Result->getSecond();
50+
const llvm::StringRef Designator = Result->getSecond();
51+
return (Designator.front() == '.' ? Designator.substr(1) : Designator)
52+
.trim("\0"); // Trim NULL characters appearing on Windows in the
53+
// name.
5154
}
5255

5356
private:
@@ -136,9 +139,10 @@ void UseDesignatedInitializersCheck::check(
136139
"use designated initializer list to initialize %0");
137140
Diag << Type << InitList->getSourceRange();
138141
for (const Stmt *InitExpr : *SyntacticInitList) {
139-
if (const auto Designator = Designators[InitExpr->getBeginLoc()])
142+
const auto Designator = Designators[InitExpr->getBeginLoc()];
143+
if (Designator && !Designator->empty())
140144
Diag << FixItHint::CreateInsertion(InitExpr->getBeginLoc(),
141-
(*Designator + "=").str());
145+
("." + *Designator + "=").str());
142146
}
143147
}
144148
diag(Type->getBeginLoc(), "aggregate type is defined here",
@@ -162,12 +166,9 @@ void UseDesignatedInitializersCheck::check(
162166
} else {
163167
diag(InitExpr->getBeginLoc(),
164168
"use designated init expression to initialize field '%0'")
165-
<< InitExpr->getSourceRange()
166-
<< (Designator->front() == '.'
167-
? Designator->substr(1) // Strip leading dot
168-
: *Designator)
169+
<< InitExpr->getSourceRange() << *Designator
169170
<< FixItHint::CreateInsertion(InitExpr->getBeginLoc(),
170-
(*Designator + "=").str());
171+
("." + *Designator + "=").str());
171172
}
172173
}
173174
}

0 commit comments

Comments
 (0)