diff options
author | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-12 14:29:50 +0000 |
---|---|---|
committer | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-12 14:31:34 +0000 |
commit | 871c5d30031f8bf103c466fe66b4a79052890121 (patch) | |
tree | d52ccadda3469b132812cdb86e82c93700bdb99e /components/sync_driver | |
parent | f3fc594daec2e9bbed8c36c16669e81d7a6610de (diff) | |
download | chromium_src-871c5d30031f8bf103c466fe66b4a79052890121.zip chromium_src-871c5d30031f8bf103c466fe66b4a79052890121.tar.gz chromium_src-871c5d30031f8bf103c466fe66b4a79052890121.tar.bz2 |
[Sync] Don't synchronously stop datatypes that encounter errors
The datatype logic may be operating unders assumptions that break when
the type is stopped from under it, possibly triggering crashes.
BUG=402595
Review URL: https://codereview.chromium.org/462863002
Cr-Commit-Position: refs/heads/master@{#288954}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@288954 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'components/sync_driver')
-rw-r--r-- | components/sync_driver/ui_data_type_controller.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/components/sync_driver/ui_data_type_controller.cc b/components/sync_driver/ui_data_type_controller.cc index eca5779..23487a2 100644 --- a/components/sync_driver/ui_data_type_controller.cc +++ b/components/sync_driver/ui_data_type_controller.cc @@ -331,9 +331,12 @@ void UIDataTypeController::OnSingleDataTypeUnrecoverableError( if (!start_callback_.is_null()) { syncer::SyncMergeResult local_merge_result(type()); local_merge_result.set_error(error); - start_callback_.Run(RUNTIME_ERROR, - local_merge_result, - syncer::SyncMergeResult(type())); + base::MessageLoop::current()->PostTask( + FROM_HERE, + base::Bind(start_callback_, + RUNTIME_ERROR, + local_merge_result, + syncer::SyncMergeResult(type()))); } } |