Index: chrome/common/extensions/permissions/socket_permission.cc |
diff --git a/chrome/common/extensions/permissions/socket_permission.cc b/chrome/common/extensions/permissions/socket_permission.cc |
index e21eb9faf38a10db4175ae272af12cc8839a4c9c..2cf09d85c9997bb28671680bb5243413dc5237f3 100644 |
--- a/chrome/common/extensions/permissions/socket_permission.cc |
+++ b/chrome/common/extensions/permissions/socket_permission.cc |
@@ -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()) { |
Mihai Parparita -not on Chrome
2012/08/16 22:56:58
As discussed, switching APIPermissionDetail to not
|
+ 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 { |