Chromium Code Reviews| Index: ios/chrome/browser/search_engines/search_engines_util.cc |
| diff --git a/ios/chrome/browser/search_engines/search_engines_util.cc b/ios/chrome/browser/search_engines/search_engines_util.cc |
| index afd94e08553005eccf9f5fb042e2d90789c2a787..5ec1c0e75d2379122d01b5965c666f13a5e9fd69 100644 |
| --- a/ios/chrome/browser/search_engines/search_engines_util.cc |
| +++ b/ios/chrome/browser/search_engines/search_engines_util.cc |
| @@ -28,7 +28,7 @@ void UpdateSearchEngine(TemplateURLService* service) { |
| DCHECK(service->loaded()); |
| std::vector<TemplateURL*> old_engines = service->GetTemplateURLs(); |
| size_t default_engine; |
| - ScopedVector<TemplateURLData> new_engines = |
| + std::vector<std::unique_ptr<TemplateURLData>> new_engines = |
| TemplateURLPrepopulateData::GetPrepopulatedEngines(nullptr, |
| &default_engine); |
| DCHECK(default_engine == 0); |
| @@ -39,8 +39,8 @@ void UpdateSearchEngine(TemplateURLService* service) { |
| // It is not possible to add all the new ones first, because the service gets |
| // confused when a prepopulated engine is there more than once. |
| // Instead, this will in a first pass makes google as the default engine. In |
| - // a second pass, it will remove all other search engine. At last, in a third |
| - // pass, it will add all new engine but google. |
| + // a second pass, it will remove all other search engines. At last, in a third |
| + // pass, it will add all new engines but google. |
| for (auto* engine : old_engines) { |
| if (engine->prepopulate_id() == kGoogleEnginePrepopulatedId) |
| service->SetUserSelectedDefaultSearchProvider(engine); |
| @@ -49,15 +49,9 @@ void UpdateSearchEngine(TemplateURLService* service) { |
| if (engine->prepopulate_id() != kGoogleEnginePrepopulatedId) |
| service->Remove(engine); |
| } |
| - ScopedVector<TemplateURLData>::iterator it = new_engines.begin(); |
| - while (it != new_engines.end()) { |
| - if ((*it)->prepopulate_id != kGoogleEnginePrepopulatedId) { |
| - // service->Add takes ownership on Added TemplateURL. |
| - service->Add(base::MakeUnique<TemplateURL>(**it)); |
| - it = new_engines.weak_erase(it); |
|
droger
2016/09/02 08:34:26
If I understand correctly this was a memory leak.
Avi (use Gerrit)
2016/09/02 14:39:38
Yes, this was a memory leak; we were constructing
|
| - } else { |
| - ++it; |
| - } |
| + for (const auto& engine : new_engines) { |
| + if (engine->prepopulate_id != kGoogleEnginePrepopulatedId) |
| + service->Add(base::MakeUnique<TemplateURL>(*engine)); |
| } |
| } |