| Index: chrome/browser/sync/engine/build_and_process_conflict_sets_command.cc
|
| diff --git a/chrome/browser/sync/engine/build_and_process_conflict_sets_command.cc b/chrome/browser/sync/engine/build_and_process_conflict_sets_command.cc
|
| index ca27be01642fb86eb665900de0bb970e0814ad15..2fd6b305ec6f524583d3234c2a85a434691eaa57 100644
|
| --- a/chrome/browser/sync/engine/build_and_process_conflict_sets_command.cc
|
| +++ b/chrome/browser/sync/engine/build_and_process_conflict_sets_command.cc
|
| @@ -227,12 +227,12 @@ void BuildAndProcessConflictSetsCommand::BuildConflictSets(
|
| set<syncable::Id>::iterator i = conflict_progress->ConflictingItemsBegin();
|
| while (i != conflict_progress->ConflictingItemsEnd()) {
|
| syncable::Entry entry(trans, syncable::GET_BY_ID, *i);
|
| - CHECK(entry.good());
|
| - if (!entry.Get(syncable::IS_UNSYNCED) &&
|
| - !entry.Get(syncable::IS_UNAPPLIED_UPDATE)) {
|
| + if (!entry.good() ||
|
| + (!entry.Get(syncable::IS_UNSYNCED) &&
|
| + !entry.Get(syncable::IS_UNAPPLIED_UPDATE))) {
|
| // This can happen very rarely. It means we had a simply conflicting item
|
| - // that randomly committed. We drop the entry as it's no longer
|
| - // conflicting.
|
| + // that randomly committed; its ID could have changed during the commit.
|
| + // We drop the entry as it's no longer conflicting.
|
| conflict_progress->EraseConflictingItemById(*(i++));
|
| continue;
|
| }
|
|
|