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) {