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 |