Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6026)

Unified Diff: chrome/common/extensions/permissions/socket_permission.cc

Issue 10832362: Revert 152049 - Fix memory leaks in extensions::SocketPermission. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/common/extensions/permissions/socket_permission.cc
===================================================================
--- chrome/common/extensions/permissions/socket_permission.cc (revision 152052)
+++ chrome/common/extensions/permissions/socket_permission.cc (working copy)
@@ -90,50 +90,36 @@
const APIPermissionDetail* rhs) const {
CHECK(rhs->permission() == permission());
const SocketPermission* perm = static_cast<const SocketPermission*>(rhs);
- SocketPermission* result = new SocketPermission(permission());
+ scoped_refptr<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()));
- if (result->data_set_.empty()) {
- delete result;
- result = NULL;
- }
- return result;
-
+ return result->data_set_.empty() ? NULL : result.release();
}
APIPermissionDetail* SocketPermission::Union(
const APIPermissionDetail* rhs) const {
CHECK(rhs->permission() == permission());
const SocketPermission* perm = static_cast<const SocketPermission*>(rhs);
- SocketPermission* result = new SocketPermission(permission());
+ scoped_refptr<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()));
- if (result->data_set_.empty()) {
- delete result;
- result = NULL;
- }
- return result;
-
+ return result->data_set_.empty() ? NULL : result.release();
}
APIPermissionDetail* SocketPermission::Intersect(
const APIPermissionDetail* rhs) const {
CHECK(rhs->permission() == permission());
const SocketPermission* perm = static_cast<const SocketPermission*>(rhs);
- SocketPermission* result = new SocketPermission(permission());
+ scoped_refptr<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()));
- if (result->data_set_.empty()) {
- delete result;
- result = NULL;
- }
- return result;
+ return result->data_set_.empty() ? NULL : result.release();
}
void SocketPermission::Write(IPC::Message* m) const {
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698