diff --git a/libs/androidfw/tests/Config_test.cpp b/libs/androidfw/tests/Config_test.cpp
index f5fd0f2..b54915f 100644
--- a/libs/androidfw/tests/Config_test.cpp
+++ b/libs/androidfw/tests/Config_test.cpp
@@ -27,19 +27,15 @@
 
 static ResTable_config selectBest(const ResTable_config& target,
                                   const Vector<ResTable_config>& configs) {
-  Vector<ResTable_config> matchedConfigs;
+  ResTable_config bestConfig;
+  memset(&bestConfig, 0, sizeof(bestConfig));
   const size_t configCount = configs.size();
   for (size_t i = 0; i < configCount; i++) {
     const ResTable_config& thisConfig = configs[i];
-    if (thisConfig.match(target)) {
-      matchedConfigs.add(thisConfig);
+    if (!thisConfig.match(target)) {
+      continue;
     }
-  }
 
-  ResTable_config bestConfig = matchedConfigs[0];
-  const size_t matchingConfigCount = matchedConfigs.size();
-  for (size_t i = 1; i < matchingConfigCount; i++) {
-    const ResTable_config& thisConfig = configs[i];
     if (thisConfig.isBetterThan(bestConfig, &target)) {
       bestConfig = thisConfig;
     }
@@ -79,9 +75,6 @@
   configs.add(buildDensityConfig(int(ResTable_config::DENSITY_HIGH) + 20));
   ASSERT_EQ(expectedBest, selectBest(deviceConfig, configs));
 
-  configs.add(buildDensityConfig(int(ResTable_config::DENSITY_XHIGH) - 1));
-  ASSERT_EQ(expectedBest, selectBest(deviceConfig, configs));
-
   expectedBest = buildDensityConfig(ResTable_config::DENSITY_XHIGH);
   configs.add(expectedBest);
   ASSERT_EQ(expectedBest, selectBest(deviceConfig, configs));
