[res] Change OverlayableInfo to hold string views
No need to copy the strings as we keep them in separate
containers anyway, may just reference them
Bug: 237583012
Test: build + boot + UTs
Change-Id: I2853cd3c992ca482ed6988e0c52a4037b158d999
diff --git a/libs/androidfw/LoadedArsc.cpp b/libs/androidfw/LoadedArsc.cpp
index 193c865..c0fdfe2 100644
--- a/libs/androidfw/LoadedArsc.cpp
+++ b/libs/androidfw/LoadedArsc.cpp
@@ -648,10 +648,11 @@
util::ReadUtf16StringFromDevice(overlayable->name, std::size(overlayable->name), &name);
std::string actor;
util::ReadUtf16StringFromDevice(overlayable->actor, std::size(overlayable->actor), &actor);
- auto [it, inserted] =
- loaded_package->overlayable_map_.emplace(name, actor);
+ auto [name_to_actor_it, inserted] =
+ loaded_package->overlayable_map_.emplace(std::move(name), std::move(actor));
if (!inserted) {
- LOG(ERROR) << "Multiple <overlayable> blocks with the same name '" << it->first << "'.";
+ LOG(ERROR) << "Multiple <overlayable> blocks with the same name '"
+ << name_to_actor_it->first << "'.";
return {};
}
@@ -668,7 +669,6 @@
LOG(ERROR) << "RES_TABLE_OVERLAYABLE_POLICY_TYPE too small.";
return {};
}
-
if ((overlayable_child_chunk.data_size() / sizeof(ResTable_ref))
< dtohl(policy_header->entry_count)) {
LOG(ERROR) << "RES_TABLE_OVERLAYABLE_POLICY_TYPE too small to hold entries.";
@@ -690,8 +690,8 @@
// Add the pairing of overlayable properties and resource ids to the package
OverlayableInfo overlayable_info {
- .name = name,
- .actor = actor,
+ .name = name_to_actor_it->first,
+ .actor = name_to_actor_it->second,
.policy_flags = policy_header->policy_flags
};
loaded_package->overlayable_infos_.emplace_back(std::move(overlayable_info), std::move(ids));