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
diff --git a/webrtc/modules/desktop_capture/desktop_frame_win.cc b/webrtc/modules/desktop_capture/desktop_frame_win.cc
index 261a90e..98bc902 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 @@
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 089a877..da93f5f 100644
--- a/webrtc/modules/desktop_capture/window_capturer_win.cc
+++ b/webrtc/modules/desktop_capture/window_capturer_win.cc
@@ -189,6 +189,10 @@
scoped_ptr<DesktopFrameWin> 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());