Index: base/message_loop/message_pump_libevent.cc |
diff --git a/base/message_loop/message_pump_libevent.cc b/base/message_loop/message_pump_libevent.cc |
index 26be687c6dd1162788415e540c2e83883bc206a9..d52025a1990ac6bb1895b35be5c22fd43862f1d2 100644 |
--- a/base/message_loop/message_pump_libevent.cc |
+++ b/base/message_loop/message_pump_libevent.cc |
@@ -217,7 +217,7 @@ static void timer_callback(int fd, short events, void *context) |
// Reentrant! |
void MessagePumpLibevent::Run(Delegate* delegate) { |
- DCHECK(keep_running_) << "Quit must have been called outside of Run!"; |
+ AutoReset<bool> auto_reset_keep_running(&keep_running_, true); |
AutoReset<bool> auto_reset_in_run(&in_run_, true); |
// event_base_loopexit() + EVLOOP_ONCE is leaky, see http://crbug.com/25641. |
@@ -275,12 +275,10 @@ void MessagePumpLibevent::Run(Delegate* delegate) { |
} |
} |
} |
- |
- keep_running_ = true; |
} |
void MessagePumpLibevent::Quit() { |
- DCHECK(in_run_); |
+ DCHECK(in_run_) << "Quit was called outside of Run!"; |
// Tell both libevent and Run that they should break out of their loops. |
keep_running_ = false; |
ScheduleWork(); |