| Index: chrome/browser/sync/internal_api/change_reorder_buffer.cc
|
| diff --git a/chrome/browser/sync/internal_api/change_reorder_buffer.cc b/chrome/browser/sync/internal_api/change_reorder_buffer.cc
|
| index d030e5c2c859fa25009b5790d61022cec30b601b..090f74444292d4066763ef73456f2ae479fd4ea6 100644
|
| --- a/chrome/browser/sync/internal_api/change_reorder_buffer.cc
|
| +++ b/chrome/browser/sync/internal_api/change_reorder_buffer.cc
|
| @@ -121,8 +121,9 @@ ChangeReorderBuffer::ChangeReorderBuffer() {
|
| ChangeReorderBuffer::~ChangeReorderBuffer() {
|
| }
|
|
|
| -ImmutableChangeRecordList ChangeReorderBuffer::GetAllChangesInTreeOrder(
|
| - const BaseTransaction* sync_trans) {
|
| +bool ChangeReorderBuffer::GetAllChangesInTreeOrder(
|
| + const BaseTransaction* sync_trans,
|
| + ImmutableChangeRecordList* changes) {
|
| syncable::BaseTransaction* trans = sync_trans->GetWrappedTrans();
|
|
|
| // Step 1: Iterate through the operations, doing three things:
|
| @@ -200,8 +201,12 @@ ImmutableChangeRecordList ChangeReorderBuffer::GetAllChangesInTreeOrder(
|
| // There were ordering changes on the children of this parent, so
|
| // enumerate all the children in the sibling order.
|
| syncable::Entry parent(trans, syncable::GET_BY_HANDLE, next);
|
| - syncable::Id id = trans->directory()->
|
| - GetFirstChildId(trans, parent.Get(syncable::ID));
|
| + syncable::Id id;
|
| + if (!trans->directory()->GetFirstChildId(
|
| + trans, parent.Get(syncable::ID), &id)) {
|
| + *changes = ImmutableChangeRecordList();
|
| + return false;
|
| + }
|
| while (!id.IsRoot()) {
|
| syncable::Entry child(trans, syncable::GET_BY_ID, id);
|
| CHECK(child.good());
|
| @@ -217,7 +222,8 @@ ImmutableChangeRecordList ChangeReorderBuffer::GetAllChangesInTreeOrder(
|
| }
|
| }
|
|
|
| - return ImmutableChangeRecordList(&changelist);
|
| + *changes = ImmutableChangeRecordList(&changelist);
|
| + return true;
|
| }
|
|
|
| } // namespace sync_api
|
|
|