Loading tools/aapt2/StringPool.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -172,11 +172,13 @@ StringPool::Ref StringPool::MakeRef(const StringPiece& str, const Context& conte StringPool::Ref StringPool::MakeRefImpl(const StringPiece& str, const Context& context, bool unique) { if (unique) { auto iter = indexed_strings_.find(str); if (iter != std::end(indexed_strings_)) { auto range = indexed_strings_.equal_range(str); for (auto iter = range.first; iter != range.second; ++iter) { if (context.priority == iter->second->context.priority) { return Ref(iter->second); } } } std::unique_ptr<Entry> entry(new Entry()); entry->value = str.to_string(); Loading tools/aapt2/StringPool_test.cpp +11 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,17 @@ TEST(StringPoolTest, DoNotInsertNewDuplicateString) { EXPECT_THAT(pool.size(), Eq(1u)); } TEST(StringPoolTest, DoNotDedupeSameStringDifferentPriority) { StringPool pool; StringPool::Ref ref_a = pool.MakeRef("wut", StringPool::Context(0x81010001)); StringPool::Ref ref_b = pool.MakeRef("wut", StringPool::Context(0x81010002)); EXPECT_THAT(*ref_a, Eq("wut")); EXPECT_THAT(*ref_b, Eq("wut")); EXPECT_THAT(pool.size(), Eq(2u)); } TEST(StringPoolTest, MaintainInsertionOrderIndex) { StringPool pool; Loading Loading
tools/aapt2/StringPool.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -172,11 +172,13 @@ StringPool::Ref StringPool::MakeRef(const StringPiece& str, const Context& conte StringPool::Ref StringPool::MakeRefImpl(const StringPiece& str, const Context& context, bool unique) { if (unique) { auto iter = indexed_strings_.find(str); if (iter != std::end(indexed_strings_)) { auto range = indexed_strings_.equal_range(str); for (auto iter = range.first; iter != range.second; ++iter) { if (context.priority == iter->second->context.priority) { return Ref(iter->second); } } } std::unique_ptr<Entry> entry(new Entry()); entry->value = str.to_string(); Loading
tools/aapt2/StringPool_test.cpp +11 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,17 @@ TEST(StringPoolTest, DoNotInsertNewDuplicateString) { EXPECT_THAT(pool.size(), Eq(1u)); } TEST(StringPoolTest, DoNotDedupeSameStringDifferentPriority) { StringPool pool; StringPool::Ref ref_a = pool.MakeRef("wut", StringPool::Context(0x81010001)); StringPool::Ref ref_b = pool.MakeRef("wut", StringPool::Context(0x81010002)); EXPECT_THAT(*ref_a, Eq("wut")); EXPECT_THAT(*ref_b, Eq("wut")); EXPECT_THAT(pool.size(), Eq(2u)); } TEST(StringPoolTest, MaintainInsertionOrderIndex) { StringPool pool; Loading