diff options
author | Robert Greenwalt <robdroid@android.com> | 2009-06-09 09:14:20 -0700 |
---|---|---|
committer | Robert Greenwalt <robdroid@android.com> | 2009-06-09 16:23:35 -0700 |
commit | f878e2d80c3a0afefe3b018d232df6066379e1d5 (patch) | |
tree | 7a5ad87b37729db613202666cea37e525dbd53a3 /tools | |
parent | 1e3d1b4b83452286b000b8cd1997e5aef97fe2a7 (diff) | |
download | frameworks_base-f878e2d80c3a0afefe3b018d232df6066379e1d5.zip frameworks_base-f878e2d80c3a0afefe3b018d232df6066379e1d5.tar.gz frameworks_base-f878e2d80c3a0afefe3b018d232df6066379e1d5.tar.bz2 |
Make aapt Error out when an overlay adds a string.
Final added check (I think) for 1585775 - not letting overlays add
resources.
modified: ResourceTable.cpp
modified: ResourceTable.h
Diffstat (limited to 'tools')
-rw-r--r-- | tools/aapt/ResourceTable.cpp | 24 | ||||
-rw-r--r-- | tools/aapt/ResourceTable.h | 4 |
2 files changed, 18 insertions, 10 deletions
diff --git a/tools/aapt/ResourceTable.cpp b/tools/aapt/ResourceTable.cpp index 770c7d8..b004664 100644 --- a/tools/aapt/ResourceTable.cpp +++ b/tools/aapt/ResourceTable.cpp @@ -1516,8 +1516,9 @@ status_t ResourceTable::addEntry(const SourcePos& sourcePos, String8(value).string()); } #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; } @@ -2899,7 +2898,7 @@ status_t ResourceTable::Entry::setItem(const SourcePos& sourcePos, mItem.sourcePos.file.string(), mItem.sourcePos.line); return UNKNOWN_ERROR; } - + mType = TYPE_ITEM; mItem = item; mItemFormat = format; @@ -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, diff --git a/tools/aapt/ResourceTable.h b/tools/aapt/ResourceTable.h index 20865ea..ec4331a 100644 --- a/tools/aapt/ResourceTable.h +++ b/tools/aapt/ResourceTable.h @@ -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, |