From 17758e96c5e93ad38b54e2dcabe127fad146e202 Mon Sep 17 00:00:00 2001 From: "sergeyu@chromium.org" Date: Thu, 1 Aug 2013 19:51:04 +0000 Subject: [PATCH] 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 --- webrtc/modules/desktop_capture/desktop_region.cc | 4 ++-- webrtc/modules/desktop_capture/desktop_region_unittest.cc | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/webrtc/modules/desktop_capture/desktop_region.cc b/webrtc/modules/desktop_capture/desktop_region.cc index fff0c8c989..a5b8ff6990 100644 --- a/webrtc/modules/desktop_capture/desktop_region.cc +++ b/webrtc/modules/desktop_capture/desktop_region.cc @@ -208,10 +208,10 @@ void DesktopRegion::Intersect(const DesktopRegion& region1, 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 64ad4b8a8e..de4b3262da 100644 --- a/webrtc/modules/desktop_capture/desktop_region_unittest.cc +++ b/webrtc/modules/desktop_capture/desktop_region_unittest.cc @@ -426,6 +426,9 @@ TEST(DesktopRegionTest, Intersect) { 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) {