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

Unified Diff: device/base/device_monitor_linux.cc

Issue 2433933004: Leak DeviceMonitorLinux on shutdown. (Closed)
Patch Set: fix build error Created 4 years, 2 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: device/base/device_monitor_linux.cc
diff --git a/device/base/device_monitor_linux.cc b/device/base/device_monitor_linux.cc
index cc64870b8cf17392507039756fe43eeef33af6ca..24aa95adc8e2e9cd4d2a10639b5178b96371d763 100644
--- a/device/base/device_monitor_linux.cc
+++ b/device/base/device_monitor_linux.cc
@@ -21,8 +21,8 @@ const char kUdevActionAdd[] = "add";
const char kUdevActionRemove[] = "remove";
// The instance will be reset when message loop destroys.
-base::LazyInstance<std::unique_ptr<DeviceMonitorLinux>>::Leaky
- g_device_monitor_linux_ptr = LAZY_INSTANCE_INITIALIZER;
+base::LazyInstance<DeviceMonitorLinux>::Leaky g_device_monitor_linux =
+ LAZY_INSTANCE_INITIALIZER;
} // namespace
@@ -61,9 +61,7 @@ DeviceMonitorLinux::DeviceMonitorLinux() : monitor_fd_(-1) {
// static
DeviceMonitorLinux* DeviceMonitorLinux::GetInstance() {
- if (!g_device_monitor_linux_ptr.Get().get())
- g_device_monitor_linux_ptr.Get().reset(new DeviceMonitorLinux());
- return g_device_monitor_linux_ptr.Get().get();
+ return g_device_monitor_linux.Pointer();
}
void DeviceMonitorLinux::AddObserver(Observer* observer) {
@@ -113,13 +111,11 @@ void DeviceMonitorLinux::WillDestroyCurrentMessageLoop() {
DCHECK(thread_checker_.CalledOnValidThread());
for (auto& observer : observers_)
observer.WillDestroyMonitorMessageLoop();
- g_device_monitor_linux_ptr.Get().reset(nullptr);
}
DeviceMonitorLinux::~DeviceMonitorLinux() {
- DCHECK(thread_checker_.CalledOnValidThread());
- base::MessageLoop::current()->RemoveDestructionObserver(this);
- close(monitor_fd_);
+ // A leaky LazyInstance is never destroyed.
+ NOTREACHED();
}
void DeviceMonitorLinux::OnMonitorCanReadWithoutBlocking() {
« 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