From 6a5cc9d8998ec979ea3be1b3378b7b47d6c765e9 Mon Sep 17 00:00:00 2001 From: "sergeyu@chromium.org" Date: Thu, 12 Sep 2013 19:17:26 +0000 Subject: [PATCH] Fix crash in the window capturer on windows BUG=crbug.com/289753 R=wez@chromium.org Review URL: https://webrtc-codereview.appspot.com/2203005 git-svn-id: http://webrtc.googlecode.com/svn/trunk@4737 4adac7df-926f-26a2-2b94-8c16560cd09d --- webrtc/modules/desktop_capture/desktop_frame_win.cc | 3 +++ webrtc/modules/desktop_capture/window_capturer_win.cc | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/webrtc/modules/desktop_capture/desktop_frame_win.cc b/webrtc/modules/desktop_capture/desktop_frame_win.cc index 261a90e9dc..98bc902c4b 100644 --- a/webrtc/modules/desktop_capture/desktop_frame_win.cc +++ b/webrtc/modules/desktop_capture/desktop_frame_win.cc @@ -10,6 +10,8 @@ #include "webrtc/modules/desktop_capture/desktop_frame_win.h" +#include "webrtc/system_wrappers/interface/logging.h" + namespace webrtc { DesktopFrameWin::DesktopFrameWin(DesktopSize size, @@ -48,6 +50,7 @@ DesktopFrameWin* DesktopFrameWin::Create(DesktopSize size, HBITMAP bitmap = CreateDIBSection(hdc, &bmi, DIB_RGB_COLORS, &data, section_handle, 0); if (!bitmap) { + LOG(LS_WARNING) << "Failed to allocate new window frame " << GetLastError(); delete shared_memory; return NULL; } diff --git a/webrtc/modules/desktop_capture/window_capturer_win.cc b/webrtc/modules/desktop_capture/window_capturer_win.cc index 089a877790..da93f5fce0 100644 --- a/webrtc/modules/desktop_capture/window_capturer_win.cc +++ b/webrtc/modules/desktop_capture/window_capturer_win.cc @@ -189,6 +189,10 @@ void WindowCapturerWin::Capture(const DesktopRegion& region) { scoped_ptr frame(DesktopFrameWin::Create( DesktopSize(rect.right - rect.left, rect.bottom - rect.top), NULL, window_dc_)); + if (!frame.get()) { + callback_->OnCaptureCompleted(NULL); + return; + } HDC mem_dc = CreateCompatibleDC(window_dc_); SelectObject(mem_dc, frame->bitmap());