summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_pref_store.cc
diff options
context:
space:
mode:
authorjrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-12 23:43:17 +0000
committerjrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-12 23:43:17 +0000
commit9fbb44c3c924152df427cbca4014994e3969d4cd (patch)
tree71fabd1c8f5111020523ffca69d030a965a32d3e /chrome/browser/extensions/extension_pref_store.cc
parentefe414eeae9ffdef6d6176b3936799a10dbc06a1 (diff)
downloadchromium_src-9fbb44c3c924152df427cbca4014994e3969d4cd.zip
chromium_src-9fbb44c3c924152df427cbca4014994e3969d4cd.tar.gz
chromium_src-9fbb44c3c924152df427cbca4014994e3969d4cd.tar.bz2
Fix memory leak in extension pref store
BUG=none Memory bot which will turn green with this change: http://build.chromium.org/buildbot/memory/builders/Linux%20Heapcheck/builds/4870/steps/heapcheck%20test:%20unit/logs/stdio Review URL: http://codereview.chromium.org/2923008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52150 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_pref_store.cc')
-rw-r--r--chrome/browser/extensions/extension_pref_store.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/chrome/browser/extensions/extension_pref_store.cc b/chrome/browser/extensions/extension_pref_store.cc
index fd0a063..437ca77 100644
--- a/chrome/browser/extensions/extension_pref_store.cc
+++ b/chrome/browser/extensions/extension_pref_store.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/extensions/extension_pref_store.h"
#include "base/logging.h"
+#include "base/stl_util-inl.h"
#include "base/values.h"
#include "chrome/browser/pref_service.h"
@@ -13,6 +14,10 @@ ExtensionPrefStore::ExtensionPrefStore(PrefService* pref_service)
prefs_(new DictionaryValue()) {
}
+ExtensionPrefStore::~ExtensionPrefStore() {
+ STLDeleteElements(&extension_stack_);
+}
+
// This could be sped up by keeping track of which extension currently controls
// a given preference, among other optimizations. But we estimate that fewer
// than 10 installed extensions will be trying to control any preferences, so
@@ -87,6 +92,7 @@ void ExtensionPrefStore::UninstallExtension(std::string extension_id) {
i != extension_stack_.end(); ++i) {
if ((*i)->extension_id == extension_id) {
pref_values.reset((*i)->pref_values);
+ delete *i;
extension_stack_.erase(i);
break;
}