Fix crash in DesktopRegion::Intersect().
BUG=crbug.com/266933
R=alexeypa@chromium.org
Review URL: https://webrtc-codereview.appspot.com/1938004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@4468 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/modules/desktop_capture/desktop_region.cc b/webrtc/modules/desktop_capture/desktop_region.cc
index fff0c8c..a5b8ff6 100644
--- a/webrtc/modules/desktop_capture/desktop_region.cc
+++ b/webrtc/modules/desktop_capture/desktop_region.cc
@@ -208,10 +208,10 @@
if (new_row->second->spans.empty()) {
delete new_row->second;
rows_.erase(new_row);
+ } else {
+ MergeWithPrecedingRow(new_row);
}
- MergeWithPrecedingRow(new_row);
-
// If |it1| was completely consumed, move to the next one.
if (it1->second->bottom == bottom)
++it1;
diff --git a/webrtc/modules/desktop_capture/desktop_region_unittest.cc b/webrtc/modules/desktop_capture/desktop_region_unittest.cc
index 64ad4b8..de4b326 100644
--- a/webrtc/modules/desktop_capture/desktop_region_unittest.cc
+++ b/webrtc/modules/desktop_capture/desktop_region_unittest.cc
@@ -426,6 +426,9 @@
DesktopRect::MakeLTRB(50, 30, 90, 50) },
2, { DesktopRect::MakeLTRB(50, 10, 100, 30),
DesktopRect::MakeLTRB(50, 30, 90, 50) } },
+ { 1, { DesktopRect::MakeLTRB(0, 0, 100, 100) },
+ 1, { DesktopRect::MakeLTRB(100, 50, 200, 200) },
+ 0, {} },
};
for (size_t i = 0; i < (sizeof(cases) / sizeof(Case)); ++i) {