| Index: chrome/browser/extensions/syncable_extension_settings_storage.cc
|
| diff --git a/chrome/browser/extensions/syncable_extension_settings_storage.cc b/chrome/browser/extensions/syncable_extension_settings_storage.cc
|
| index 137a6cb223783a420d1ce5589eaf57c25609f123..a3f3e14e24f54463c9b9a1455706878a17b2f47a 100644
|
| --- a/chrome/browser/extensions/syncable_extension_settings_storage.cc
|
| +++ b/chrome/browser/extensions/syncable_extension_settings_storage.cc
|
| @@ -176,15 +176,19 @@ SyncError SyncableExtensionSettingsStorage::OverwriteLocalSettingsWithSync(
|
| ExtensionSettingSyncDataList changes;
|
| for (DictionaryValue::key_iterator it = settings.begin_keys();
|
| it != settings.end_keys(); ++it) {
|
| - Value* sync_value = NULL;
|
| - if (new_sync_state->RemoveWithoutPathExpansion(*it, &sync_value)) {
|
| + Value* orphaned_sync_value = NULL;
|
| + if (new_sync_state->RemoveWithoutPathExpansion(*it, &orphaned_sync_value)) {
|
| + scoped_ptr<Value> sync_value(orphaned_sync_value);
|
| Value* local_value = NULL;
|
| settings.GetWithoutPathExpansion(*it, &local_value);
|
| - if (!local_value->Equals(sync_value)) {
|
| + if (!sync_value->Equals(local_value)) {
|
| // Sync value is different, update local setting with new value.
|
| changes.push_back(
|
| ExtensionSettingSyncData(
|
| - SyncChange::ACTION_UPDATE, extension_id_, *it, sync_value));
|
| + SyncChange::ACTION_UPDATE,
|
| + extension_id_,
|
| + *it,
|
| + sync_value.release()));
|
| }
|
| } else {
|
| // Not synced, delete local setting.
|
| @@ -200,8 +204,8 @@ SyncError SyncableExtensionSettingsStorage::OverwriteLocalSettingsWithSync(
|
| // Add all new settings to local settings.
|
| while (!new_sync_state->empty()) {
|
| std::string key = *new_sync_state->begin_keys();
|
| - Value* value;
|
| - new_sync_state->RemoveWithoutPathExpansion(key, &value);
|
| + Value* value = NULL;
|
| + CHECK(new_sync_state->RemoveWithoutPathExpansion(key, &value));
|
| changes.push_back(
|
| ExtensionSettingSyncData(
|
| SyncChange::ACTION_ADD, extension_id_, key, value));
|
|
|