Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 978ab9d9 authored by Adam Lesinski's avatar Adam Lesinski
Browse files

AAPT: Fix issue with synthesized resource not actually showing up

AAPT keeps around a few pieces of state that are disjoint, so
simply adding to a collection won't add the resource to the final
flattened output. Instead, we create the resource from the top
and then copy over the values into the newly created resource.

Bug:17647890
Change-Id: I214263e84c18f9370c6e6a5aa53aa2d833fc842d
parent 7e1d525b
Loading
Loading
Loading
Loading
+18 −1
Original line number Diff line number Diff line
@@ -3310,6 +3310,19 @@ ResourceTable::Entry::Entry(const Entry& entry)
    , mParentId(entry.mParentId)
    , mPos(entry.mPos) {}

ResourceTable::Entry& ResourceTable::Entry::operator=(const Entry& entry) {
    mName = entry.mName;
    mParent = entry.mParent;
    mType = entry.mType;
    mItem = entry.mItem;
    mItemFormat = entry.mItemFormat;
    mBag = entry.mBag;
    mNameIndex = entry.mNameIndex;
    mParentId = entry.mParentId;
    mPos = entry.mPos;
    return *this;
}

status_t ResourceTable::Entry::makeItABag(const SourcePos& sourcePos)
{
    if (mType == TYPE_BAG) {
@@ -4352,7 +4365,11 @@ status_t ResourceTable::modifyForCompat(const Bundle* bundle) {
                                    String8(entriesToAdd[i].value->getName()).string(),
                                    entriesToAdd[i].key.toString().string());

                    c->addEntry(entriesToAdd[i].key, entriesToAdd[i].value);
                    sp<Entry> newEntry = t->getEntry(c->getName(),
                            entriesToAdd[i].value->getPos(),
                            &entriesToAdd[i].key);

                    *newEntry = *entriesToAdd[i].value;
                }
            }
        }
+1 −0
Original line number Diff line number Diff line
@@ -316,6 +316,7 @@ public:
        { }

        Entry(const Entry& entry);
        Entry& operator=(const Entry& entry);

        virtual ~Entry() { }