Index: chrome/browser/extensions/api/gcd_private/privet_v3_session.cc |
diff --git a/chrome/browser/extensions/api/gcd_private/privet_v3_session.cc b/chrome/browser/extensions/api/gcd_private/privet_v3_session.cc |
index 8c22f78120c9f1b78209712abf40d7a1cae2af5a..adf66eb114f1b0f263bfeaadd097b0e93daa7463 100644 |
--- a/chrome/browser/extensions/api/gcd_private/privet_v3_session.cc |
+++ b/chrome/browser/extensions/api/gcd_private/privet_v3_session.cc |
@@ -10,6 +10,7 @@ |
#include "base/location.h" |
#include "base/logging.h" |
#include "base/macros.h" |
+#include "base/memory/ptr_util.h" |
#include "base/single_thread_task_runner.h" |
#include "base/strings/string_number_conversions.h" |
#include "base/threading/thread_task_runner_handle.h" |
@@ -486,7 +487,7 @@ net::URLFetcher* PrivetV3Session::CreateFetcher( |
FetcherDelegate* fetcher = |
new FetcherDelegate(weak_ptr_factory_.GetWeakPtr(), callback); |
if (!orphaned) |
- fetchers_.push_back(fetcher); |
+ fetchers_.push_back(base::WrapUnique(fetcher)); |
net::URLFetcher* url_fetcher = |
fetcher->CreateURLFetcher(url, request_type, orphaned); |
url_fetcher->SetLoadFlags(url_fetcher->GetLoadFlags() | |
@@ -500,7 +501,14 @@ net::URLFetcher* PrivetV3Session::CreateFetcher( |
} |
void PrivetV3Session::DeleteFetcher(const FetcherDelegate* fetcher) { |
- fetchers_.erase(std::find(fetchers_.begin(), fetchers_.end(), fetcher)); |
+ for (std::vector<std::unique_ptr<FetcherDelegate>>::iterator iter = |
+ fetchers_.begin(); |
+ iter != fetchers_.end(); ++iter) { |
+ if (iter->get() == fetcher) { |
+ fetchers_.erase(iter); |
+ break; |
+ } |
+ } |
} |
void PrivetV3Session::Cancel() { |