| Index: components/timers/rtc_alarm.cc
|
| diff --git a/components/timers/rtc_alarm.cc b/components/timers/rtc_alarm.cc
|
| index 9f2750ebfe77a4d8586c0d6807e001de5e14b751..0c3dfdf352456b35394ca5b3107723cb3562efb5 100644
|
| --- a/components/timers/rtc_alarm.cc
|
| +++ b/components/timers/rtc_alarm.cc
|
| @@ -88,7 +88,11 @@ void RtcAlarm::Reset(base::TimeDelta delay) {
|
| // differently. We queue the task here but we still go ahead and call
|
| // timerfd_settime with the zero delay anyway to cancel any previous delay
|
| // that might have been programmed.
|
| - if (delay == base::TimeDelta()) {
|
| + if (delay <= base::TimeDelta::FromMicroseconds(0)) {
|
| + // The timerfd_settime documentation is vague on what happens when it is
|
| + // passed a negative delay. We can sidestep the issue by ensuring that the
|
| + // delay is 0.
|
| + delay = base::TimeDelta::FromMicroseconds(0);
|
| origin_message_loop_->PostTask(FROM_HERE,
|
| base::Bind(&RtcAlarm::OnTimerFired,
|
| scoped_refptr<RtcAlarm>(this),
|
|
|