]> git.saurik.com Git - android/aapt.git/commitdiff
Fix an issue where a non-styled string could be made into a styled string
authorBen Gruver <bgruv@google.com>
Thu, 8 Mar 2012 05:19:16 +0000 (21:19 -0800)
committerBen Gruver <bgruv@google.com>
Thu, 8 Mar 2012 05:19:16 +0000 (21:19 -0800)
If a styled version of an otherwise identical string is encountered before
a non-styled version, aapt merges the two, effectively making the
non-styled string have a spurious style.

Change-Id: I424a61c0c83c59e0b9c8939e457402efd06a7a4f

StringPool.cpp

index fe88e37c159f9d2eb6d8906655754a1eb8f4fb48..7f137ce5be2391b33568795a306dae00f3fedd04 100644 (file)
@@ -174,7 +174,9 @@ ssize_t StringPool::add(const String16& ident, const String16& value,
     }
 
     const bool first = vidx < 0;
     }
 
     const bool first = vidx < 0;
-    if (first || !mergeDuplicates) {
+    const bool styled = (pos >= 0 && (size_t)pos < mEntryStyleArray.size()) ?
+        mEntryStyleArray[pos].spans.size() : 0;
+    if (first || styled || !mergeDuplicates) {
         pos = mEntryArray.add(eidx);
         if (first) {
             vidx = mValues.add(value, pos);
         pos = mEntryArray.add(eidx);
         if (first) {
             vidx = mValues.add(value, pos);