Fix bugprone-use-after-move in ResourceParser
This patch uses reinitialization to solve clang_tidy
bugprone-use-after-move warning in ResourceParser.
The local variables `comment` in functions is used to record comments
in XML. After calling std::move(comment), to use comment.clear() to
reinitialize the value of the variable `comment`.
Reference: https://clang.llvm.org/extra/clang-tidy/checks/\
bugprone-use-after-move.html
Test: export WITH_TIDY=1 ; \
rm -rf out/soong/.intermediates/frameworks/base/tools/aapt2* \
out/host/linux-x86/bin/aapt* \
out/host/windows-x86/bin/aapt* ;\
make aapt2
Bug: 150953574
Change-Id: I5658eaedf48e46fb5e7f12a510b83f490f9bc94b
diff --git a/tools/aapt2/ResourceParser.cpp b/tools/aapt2/ResourceParser.cpp
index f49c254..792a306 100644
--- a/tools/aapt2/ResourceParser.cpp
+++ b/tools/aapt2/ResourceParser.cpp
@@ -460,8 +460,8 @@
ParsedResource parsed_resource;
parsed_resource.config = config_;
parsed_resource.source = source_.WithLine(parser->line_number());
- // NOLINTNEXTLINE(bugprone-use-after-move) move+reset comment
parsed_resource.comment = std::move(comment);
+ comment.clear();
if (options_.visibility) {
parsed_resource.visibility_level = options_.visibility.value();
}
@@ -1040,6 +1040,7 @@
.source = item_source,
.comment = std::move(comment),
});
+ comment.clear();
// Execute group specific code.
func(entry_res, next_id);
@@ -1788,8 +1789,8 @@
ParsedResource child_resource;
child_resource.name = child_ref.name.value();
child_resource.source = item_source;
- // NOLINTNEXTLINE(bugprone-use-after-move) move+reset comment
child_resource.comment = std::move(comment);
+ comment.clear();
if (options_.visibility) {
child_resource.visibility_level = options_.visibility.value();
}