Make sure ExtentRanges don't merge extents

When querying for XOR merge ops, we want the unmerged extents. E.g.
[5-9] and [10-14] should not be merged into 1 extent, because they could
correspond to different merge ops.

Test: th
Change-Id: I14c4c9fd6bf6361af6cd1e31264bdf860127a75b
diff --git a/payload_consumer/extent_map.h b/payload_consumer/extent_map.h
index 953eed0..b275e2d 100644
--- a/payload_consumer/extent_map.h
+++ b/payload_consumer/extent_map.h
@@ -89,7 +89,7 @@
  private:
   // Get a range of exents that potentially intersect with parameter |extent|
   std::map<Extent, T, Comparator> map_;
-  ExtentRanges set_;
+  ExtentRanges set_{false};
 };
 }  // namespace chromeos_update_engine
 
diff --git a/payload_consumer/extent_map_unittest.cc b/payload_consumer/extent_map_unittest.cc
index 867038b..88a587b 100644
--- a/payload_consumer/extent_map_unittest.cc
+++ b/payload_consumer/extent_map_unittest.cc
@@ -132,4 +132,19 @@
   }
 }
 
+TEST_F(ExtentMapTest, GetTouchingExtents) {
+  ASSERT_TRUE(map_.AddExtent(ExtentForRange(5, 5), 7));
+  ASSERT_TRUE(map_.AddExtent(ExtentForRange(10, 5), 12));
+  const auto ret = map_.Get(ExtentForRange(5, 10));
+  if (ret.has_value()) {
+    ASSERT_FALSE(ret.has_value()) << ret.value();
+  }
+  const auto extents = map_.GetIntersectingExtents(ExtentForRange(0, 20));
+  ASSERT_GT(extents.size(), 0UL);
+  ASSERT_EQ(extents.size(), 2UL)
+      << "Expecting unmerged extents [5-9] and [10-14], actual: " << extents;
+  ASSERT_EQ(extents[0], ExtentForRange(5, 5));
+  ASSERT_EQ(extents[1], ExtentForRange(10, 5));
+}
+
 }  // namespace chromeos_update_engine