Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(804)

Unified Diff: content/browser/media/capture/desktop_capture_device.cc

Issue 882153005: Fix a null ptr deref crash in DesktopCaptureDevice (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/media/capture/desktop_capture_device.cc
diff --git a/content/browser/media/capture/desktop_capture_device.cc b/content/browser/media/capture/desktop_capture_device.cc
index 0ddcf2698cae148732a85b5eaa26fb190d661869..bb546c2d1f47f03b0fa91199990d933ad0e9a03a 100644
--- a/content/browser/media/capture/desktop_capture_device.cc
+++ b/content/browser/media/capture/desktop_capture_device.cc
@@ -451,7 +451,7 @@ DesktopCaptureDevice::~DesktopCaptureDevice() {
void DesktopCaptureDevice::AllocateAndStart(
const media::VideoCaptureParams& params,
scoped_ptr<Client> client) {
- thread_.message_loop_proxy()->PostTask(
+ thread_.task_runner()->PostTask(
FROM_HERE,
base::Bind(&Core::AllocateAndStart, base::Unretained(core_.get()), params,
base::Passed(&client)));
@@ -459,16 +459,20 @@ void DesktopCaptureDevice::AllocateAndStart(
void DesktopCaptureDevice::StopAndDeAllocate() {
if (core_) {
- thread_.message_loop_proxy()->DeleteSoon(FROM_HERE, core_.release());
+ thread_.task_runner()->DeleteSoon(FROM_HERE, core_.release());
thread_.Stop();
}
}
void DesktopCaptureDevice::SetNotificationWindowId(
gfx::NativeViewId window_id) {
- thread_.message_loop_proxy()->PostTask(
+ // This may be called after the capturer has been stopped.
+ if (!core_)
+ return;
+ thread_.task_runner()->PostTask(
FROM_HERE,
- base::Bind(&Core::SetNotificationWindowId, base::Unretained(core_.get()),
+ base::Bind(&Core::SetNotificationWindowId,
+ base::Unretained(core_.get()),
window_id));
}
@@ -485,7 +489,7 @@ DesktopCaptureDevice::DesktopCaptureDevice(
thread_.StartWithOptions(base::Thread::Options(thread_type, 0));
- core_.reset(new Core(thread_.message_loop_proxy(), capturer.Pass(), type));
+ core_.reset(new Core(thread_.task_runner(), capturer.Pass(), type));
}
} // namespace content
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698