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

Commit 684a2edb authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change 3577 into donut

* changes:
  Make aapt Error out when an overlay adds a string.
parents c0c0b684 f878e2d8
Loading
Loading
Loading
Loading
+15 −9
Original line number Diff line number Diff line
@@ -1517,7 +1517,8 @@ status_t ResourceTable::addEntry(const SourcePos& sourcePos,
    }
#endif

    sp<Entry> e = getEntry(package, type, name, sourcePos, params, doSetIndex);
    sp<Entry> e = getEntry(package, type, name, sourcePos, overwrite,
                           params, doSetIndex);
    if (e == NULL) {
        return UNKNOWN_ERROR;
    }
@@ -1560,8 +1561,7 @@ status_t ResourceTable::startBag(const SourcePos& sourcePos,
                        String8(name).string());
        return UNKNOWN_ERROR;
    }

    sp<Entry> e = getEntry(package, type, name, sourcePos, params);
    sp<Entry> e = getEntry(package, type, name, sourcePos, overlay, params);
    if (e == NULL) {
        return UNKNOWN_ERROR;
    }
@@ -1615,8 +1615,7 @@ status_t ResourceTable::addBag(const SourcePos& sourcePos,
               sourcePos.file.striing(), sourcePos.line, String8(type).string());
    }
#endif
    
    sp<Entry> e = getEntry(package, type, name, sourcePos, params);
    sp<Entry> e = getEntry(package, type, name, sourcePos, replace, params);
    if (e == NULL) {
        return UNKNOWN_ERROR;
    }
@@ -3219,11 +3218,17 @@ status_t ResourceTable::Type::addPublic(const SourcePos& sourcePos,
sp<ResourceTable::Entry> ResourceTable::Type::getEntry(const String16& entry,
                                                       const SourcePos& sourcePos,
                                                       const ResTable_config* config,
                                                       bool doSetIndex)
                                                       bool doSetIndex,
                                                       bool overlay)
{
    int pos = -1;
    sp<ConfigList> c = mConfigs.valueFor(entry);
    if (c == NULL) {
        if (overlay == true) {
            sourcePos.error("Resource %s appears in overlay but not"
                            " in the base package.\n", String8(entry).string());
            return NULL;
        }
        c = new ConfigList(entry, sourcePos);
        mConfigs.add(entry, c);
        pos = (int)mOrderedConfigs.size();
@@ -3522,6 +3527,7 @@ sp<ResourceTable::Entry> ResourceTable::getEntry(const String16& package,
                                                 const String16& type,
                                                 const String16& name,
                                                 const SourcePos& sourcePos,
                                                 bool overlay,
                                                 const ResTable_config* config,
                                                 bool doSetIndex)
{
@@ -3529,7 +3535,7 @@ sp<ResourceTable::Entry> ResourceTable::getEntry(const String16& package,
    if (t == NULL) {
        return NULL;
    }
    return t->getEntry(name, sourcePos, config, doSetIndex);
    return t->getEntry(name, sourcePos, config, doSetIndex, overlay);
}

sp<const ResourceTable::Entry> ResourceTable::getEntry(uint32_t resID,
+3 −1
Original line number Diff line number Diff line
@@ -418,7 +418,8 @@ public:
        sp<Entry> getEntry(const String16& entry,
                           const SourcePos& pos,
                           const ResTable_config* config = NULL,
                           bool doSetIndex = false);
                           bool doSetIndex = false,
                           bool overlay = false);

        const SourcePos& getFirstPublicSourcePos() const { return *mFirstPublicSourcePos; }

@@ -502,6 +503,7 @@ private:
                       const String16& type,
                       const String16& name,
                       const SourcePos& pos,
                       bool overlay,
                       const ResTable_config* config = NULL,
                       bool doSetIndex = false);
    sp<const Entry> getEntry(uint32_t resID,