OSDN Git Service

Do not stack allocate RefBase object in AaptAssets::filter
authorHans Boehm <hboehm@google.com>
Thu, 11 Aug 2016 02:56:50 +0000 (19:56 -0700)
committerHans Boehm <hboehm@google.com>
Thu, 11 Aug 2016 02:56:50 +0000 (19:56 -0700)
Doing so is likely to trigger log messages in the future, and will
hinder diagnosis of other problems.

Bug: 30292538
Change-Id: I2cb8c507e43d06d4afa7e35b564416c1474c81d1

tools/aapt/AaptAssets.cpp

index d346731..f906ca3 100644 (file)
@@ -1306,8 +1306,8 @@ bail:
 
 status_t AaptAssets::filter(Bundle* bundle)
 {
-    WeakResourceFilter reqFilter;
-    status_t err = reqFilter.parse(bundle->getConfigurations());
+    sp<WeakResourceFilter> reqFilter(new WeakResourceFilter());
+    status_t err = reqFilter->parse(bundle->getConfigurations());
     if (err != NO_ERROR) {
         return err;
     }
@@ -1323,12 +1323,12 @@ status_t AaptAssets::filter(Bundle* bundle)
         preferredDensity = preferredConfig.density;
     }
 
-    if (reqFilter.isEmpty() && preferredDensity == 0) {
+    if (reqFilter->isEmpty() && preferredDensity == 0) {
         return NO_ERROR;
     }
 
     if (bundle->getVerbose()) {
-        if (!reqFilter.isEmpty()) {
+        if (!reqFilter->isEmpty()) {
             printf("Applying required filter: %s\n",
                     bundle->getConfigurations().string());
         }
@@ -1380,7 +1380,7 @@ status_t AaptAssets::filter(Bundle* bundle)
                     continue;
                 }
                 const ResTable_config& config(file->getGroupEntry().toParams());
-                if (!reqFilter.match(config)) {
+                if (!reqFilter->match(config)) {
                     if (bundle->getVerbose()) {
                         printf("Pruning unneeded resource: %s\n",
                                 file->getPrintableSource().string());