Fix memory leaks in extensions::SocketPermission.


BUG=None

Review URL: https://chromiumcodereview.appspot.com/10832354

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@152049 0039d316-1c4b-4281-b951-d872f2087c98
parent 7cab3a43
......@@ -90,36 +90,50 @@ APIPermissionDetail* SocketPermission::Diff(
const APIPermissionDetail* rhs) const {
CHECK(rhs->permission() == permission());
const SocketPermission* perm = static_cast<const SocketPermission*>(rhs);
scoped_refptr<SocketPermission> result = new SocketPermission(permission());
SocketPermission* result = new SocketPermission(permission());
std::set_difference(data_set_.begin(), data_set_.end(),
perm->data_set_.begin(), perm->data_set_.end(),
std::inserter<std::set<SocketPermissionData> >(
result->data_set_, result->data_set_.begin()));
return result->data_set_.empty() ? NULL : result.release();
if (result->data_set_.empty()) {
delete result;
result = NULL;
}
return result;
}
APIPermissionDetail* SocketPermission::Union(
const APIPermissionDetail* rhs) const {
CHECK(rhs->permission() == permission());
const SocketPermission* perm = static_cast<const SocketPermission*>(rhs);
scoped_refptr<SocketPermission> result = new SocketPermission(permission());
SocketPermission* result = new SocketPermission(permission());
std::set_union(data_set_.begin(), data_set_.end(),
perm->data_set_.begin(), perm->data_set_.end(),
std::inserter<std::set<SocketPermissionData> >(
result->data_set_, result->data_set_.begin()));
return result->data_set_.empty() ? NULL : result.release();
if (result->data_set_.empty()) {
delete result;
result = NULL;
}
return result;
}
APIPermissionDetail* SocketPermission::Intersect(
const APIPermissionDetail* rhs) const {
CHECK(rhs->permission() == permission());
const SocketPermission* perm = static_cast<const SocketPermission*>(rhs);
scoped_refptr<SocketPermission> result = new SocketPermission(permission());
SocketPermission* result = new SocketPermission(permission());
std::set_intersection(data_set_.begin(), data_set_.end(),
perm->data_set_.begin(), perm->data_set_.end(),
std::inserter<std::set<SocketPermissionData> >(
result->data_set_, result->data_set_.begin()));
return result->data_set_.empty() ? NULL : result.release();
if (result->data_set_.empty()) {
delete result;
result = NULL;
}
return result;
}
void SocketPermission::Write(IPC::Message* m) const {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment