diff options
author | pavely@chromium.org <pavely@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-20 04:13:59 +0000 |
---|---|---|
committer | pavely@chromium.org <pavely@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-20 04:13:59 +0000 |
commit | cf6a02408972586fb3b92f8ddfb185a8fb0fa363 (patch) | |
tree | e67c77e37984f9e545e8dab63974a8186dc2112d /sync/engine/sync_scheduler_impl.cc | |
parent | 9af6d639460e0631c2b078397373445fbe2b67b9 (diff) | |
download | chromium_src-cf6a02408972586fb3b92f8ddfb185a8fb0fa363.zip chromium_src-cf6a02408972586fb3b92f8ddfb185a8fb0fa363.tar.gz chromium_src-cf6a02408972586fb3b92f8ddfb185a8fb0fa363.tar.bz2 |
Avoid SEGFAULT when scheduler is stopped as part of sync cycle.
Sync cycle might receive response from server that causes scheduler to
stop and draws pending_configure_params_ invalid. Check started_
before dereferencing pending_configure_params_ to avoid SEGFAULT.
BUG=320738
Review URL: https://codereview.chromium.org/62263003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@236138 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync/engine/sync_scheduler_impl.cc')
-rw-r--r-- | sync/engine/sync_scheduler_impl.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sync/engine/sync_scheduler_impl.cc b/sync/engine/sync_scheduler_impl.cc index 66460d3..85e1b67 100644 --- a/sync/engine/sync_scheduler_impl.cc +++ b/sync/engine/sync_scheduler_impl.cc @@ -528,7 +528,9 @@ void SyncSchedulerImpl::DoConfigurationSyncSessionJob(JobPriority priority) { NotifyRetryTime(base::Time()); } else { HandleFailure(session->status_controller().model_neutral_state()); - if (!pending_configure_params_->retry_task.is_null()) { + // Sync cycle might receive response from server that causes scheduler to + // stop and draws pending_configure_params_ invalid. + if (started_ && !pending_configure_params_->retry_task.is_null()) { pending_configure_params_->retry_task.Run(); pending_configure_params_->retry_task.Reset(); } |