diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-17 23:21:58 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-17 23:21:58 +0000 |
commit | c2632ab128e13820d4203e2973a85033df9fbd38 (patch) | |
tree | 5ef2f7773b441a31b07ed8ab0d42d27bdac6f54b /chrome/browser/content_settings | |
parent | 7b580671bdd357ba9baa56b433db39ffeceb05f2 (diff) | |
download | chromium_src-c2632ab128e13820d4203e2973a85033df9fbd38.zip chromium_src-c2632ab128e13820d4203e2973a85033df9fbd38.tar.gz chromium_src-c2632ab128e13820d4203e2973a85033df9fbd38.tar.bz2 |
Valgrind: Fix a leak in ContentSettingsProvider.
If the call to SetWebsiteSetting() fails, the value is still owned by the
caller and must be deleted.
BUG=none
TEST=none
R=bauerb@chromium.org
Review URL: http://codereview.chromium.org/8592001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@110594 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/content_settings')
-rw-r--r-- | chrome/browser/content_settings/content_settings_provider.h | 2 | ||||
-rw-r--r-- | chrome/browser/content_settings/host_content_settings_map.cc | 11 |
2 files changed, 6 insertions, 7 deletions
diff --git a/chrome/browser/content_settings/content_settings_provider.h b/chrome/browser/content_settings/content_settings_provider.h index 1ec0851..0b0a64e 100644 --- a/chrome/browser/content_settings/content_settings_provider.h +++ b/chrome/browser/content_settings/content_settings_provider.h @@ -42,7 +42,7 @@ class ProviderInterface { const ResourceIdentifier& resource_identifier, bool incognito) const = 0; - // Askes the provider to set the website setting for a particular + // Asks the provider to set the website setting for a particular // |primary_pattern|, |secondary_pattern|, |content_type| tuple. If the // provider accepts the setting it returns true and takes the ownership of the // |value|. Otherwise false is returned and the ownership of the |value| stays diff --git a/chrome/browser/content_settings/host_content_settings_map.cc b/chrome/browser/content_settings/host_content_settings_map.cc index db119ab..fe8fe1e 100644 --- a/chrome/browser/content_settings/host_content_settings_map.cc +++ b/chrome/browser/content_settings/host_content_settings_map.cc @@ -211,12 +211,11 @@ void HostContentSettingsMap::SetDefaultContentSetting( DCHECK(IsSettingAllowedForType(setting, content_type)); base::Value* value = Value::CreateIntegerValue(setting); - content_settings_providers_[DEFAULT_PROVIDER]->SetWebsiteSetting( - ContentSettingsPattern::Wildcard(), - ContentSettingsPattern::Wildcard(), - content_type, - std::string(), - value); + if (!content_settings_providers_[DEFAULT_PROVIDER]->SetWebsiteSetting( + ContentSettingsPattern::Wildcard(), ContentSettingsPattern::Wildcard(), + content_type, std::string(), value)) { + delete value; + } } void HostContentSettingsMap::SetWebsiteSetting( |