| Index: chrome/browser/sync/engine/syncer_util.cc
|
| diff --git a/chrome/browser/sync/engine/syncer_util.cc b/chrome/browser/sync/engine/syncer_util.cc
|
| index 8b8e5eff80bb41bf5fe99f6fe5bc01ec9de7d5d2..6efaf0c4c6513ba4da7f313d2467b6c662af4ab7 100644
|
| --- a/chrome/browser/sync/engine/syncer_util.cc
|
| +++ b/chrome/browser/sync/engine/syncer_util.cc
|
| @@ -362,7 +362,8 @@ UpdateAttemptResponse SyncerUtil::AttemptToUpdateEntry(
|
| }
|
| }
|
|
|
| - SyncerUtil::UpdateLocalDataFromServerData(trans, entry);
|
| + if (!SyncerUtil::UpdateLocalDataFromServerData(trans, entry))
|
| + return FAILED_UPDATE;
|
|
|
| return SUCCESS;
|
| }
|
| @@ -554,7 +555,7 @@ void SyncerUtil::SplitServerInformationIntoNewEntry(
|
| // This function is called on an entry when we can update the user-facing data
|
| // from the server data.
|
| // static
|
| -void SyncerUtil::UpdateLocalDataFromServerData(
|
| +bool SyncerUtil::UpdateLocalDataFromServerData(
|
| syncable::WriteTransaction* trans,
|
| syncable::MutableEntry* entry) {
|
| DCHECK(!entry->Get(IS_UNSYNCED));
|
| @@ -572,11 +573,12 @@ void SyncerUtil::UpdateLocalDataFromServerData(
|
| } else {
|
| entry->Put(NON_UNIQUE_NAME, entry->Get(SERVER_NON_UNIQUE_NAME));
|
| entry->Put(PARENT_ID, entry->Get(SERVER_PARENT_ID));
|
| - CHECK(entry->Put(IS_DEL, false));
|
| + if (!entry->Put(IS_DEL, false))
|
| + return false;
|
| Id new_predecessor =
|
| entry->ComputePrevIdFromServerPosition(entry->Get(SERVER_PARENT_ID));
|
| - CHECK(entry->PutPredecessor(new_predecessor))
|
| - << " Illegal predecessor after converting from server position.";
|
| + if (!entry->PutPredecessor(new_predecessor))
|
| + return false;
|
| }
|
|
|
| entry->Put(CTIME, entry->Get(SERVER_CTIME));
|
| @@ -584,6 +586,8 @@ void SyncerUtil::UpdateLocalDataFromServerData(
|
| entry->Put(BASE_VERSION, entry->Get(SERVER_VERSION));
|
| entry->Put(IS_DEL, entry->Get(SERVER_IS_DEL));
|
| entry->Put(IS_UNAPPLIED_UPDATE, false);
|
| +
|
| + return true;
|
| }
|
|
|
| // static
|
|
|