From: Robert Greenwalt Date: Mon, 8 Jun 2009 18:06:48 +0000 (-0700) Subject: am fa5c7e1d: Catch when a file resource (non values) added in an overlay. X-Git-Url: https://git.saurik.com/android/aapt.git/commitdiff_plain/af4e7fd976a11e2749b1d4b6203d3f9298eae9f5?hp=-c am fa5c7e1d: Catch when a file resource (non values) added in an overlay. Merge commit 'fa5c7e1dfede7e26260789dd2de5175497e9659b' * commit 'fa5c7e1dfede7e26260789dd2de5175497e9659b': Catch when a file resource (non values) added in an overlay. --- af4e7fd976a11e2749b1d4b6203d3f9298eae9f5 diff --combined Resource.cpp index 76b9d0a,027e3ab..81db323 --- a/Resource.cpp +++ b/Resource.cpp @@@ -45,6 -45,13 +45,6 @@@ static String8 parseResourceName(const } } -class ResourceTypeSet : public RefBase, - public KeyedVector > -{ -public: - ResourceTypeSet(); -}; - ResourceTypeSet::ResourceTypeSet() :RefBase(), KeyedVector >() @@@ -426,7 -433,7 +426,7 @@@ static void checkForIds(const String8& } } - static void applyFileOverlay(const sp& assets, + static bool applyFileOverlay(const sp& assets, const sp& baseSet, const char *resType) { @@@ -434,7 -441,7 +434,7 @@@ // Also add any found only in the overlay. sp overlay = assets->getOverlay(); String8 resTypeString(resType); - + // work through the linked list of overlays while (overlay.get()) { KeyedVector >* overlayRes = overlay->getResources(); @@@ -449,7 -456,7 +449,7 @@@ size_t overlayCount = overlaySet->size(); for (size_t overlayIndex=0; overlayIndexindexOfKey(overlaySet->keyAt(overlayIndex)); - if (baseIndex != UNKNOWN_ERROR) { + if (baseIndex < UNKNOWN_ERROR) { // look for same flavor. For a given file (strings.xml, for example) // there may be a locale specific or other flavors - we want to match // the same flavor. @@@ -475,9 -482,10 +475,10 @@@ } } else { // this group doesn't exist (a file that's only in the overlay) - // add it - baseSet->add(overlaySet->keyAt(overlayIndex), - overlaySet->valueAt(overlayIndex)); + fprintf(stderr, "aapt: error: " + "*** Resource file '%s' exists only in an overlay\n", + overlaySet->keyAt(overlayIndex).string()); + return false; } } // this overlay didn't have resources for this type @@@ -485,7 -493,7 +486,7 @@@ // try next overlay overlay = overlay->getOverlay(); } - return; + return true; } void addTagAttribute(const sp& node, const char* ns8, @@@ -611,13 -619,15 +612,15 @@@ status_t buildResources(Bundle* bundle current = current->getOverlay(); } // apply the overlay files to the base set - applyFileOverlay(assets, drawables, "drawable"); - applyFileOverlay(assets, layouts, "layout"); - applyFileOverlay(assets, anims, "anim"); - applyFileOverlay(assets, xmls, "xml"); - applyFileOverlay(assets, raws, "raw"); - applyFileOverlay(assets, colors, "color"); - applyFileOverlay(assets, menus, "menu"); + if (!applyFileOverlay(assets, drawables, "drawable") || + !applyFileOverlay(assets, layouts, "layout") || + !applyFileOverlay(assets, anims, "anim") || + !applyFileOverlay(assets, xmls, "xml") || + !applyFileOverlay(assets, raws, "raw") || + !applyFileOverlay(assets, colors, "color") || + !applyFileOverlay(assets, menus, "menu")) { + return UNKNOWN_ERROR; + } bool hasErrors = false; @@@ -1108,7 -1118,6 +1111,7 @@@ printf(" Writing public definitions to %s.\n", bundle->getPublicOutputFile()); } table.writePublicDefinitions(String16(assets->getPackage()), fp); + fclose(fp); } NOISY( @@@ -1126,6 -1135,7 +1129,6 @@@ return err; } } - return err; }