summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-29 03:22:20 +0000
committerhashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-29 03:22:20 +0000
commitb023f54b512c332cdf27ee872a703eedb1f97e75 (patch)
treeca6105c52f1cbe3758146491a15054ab955c5e9a
parentd6794885eb16bc311552888f1cd7556788b993f4 (diff)
downloadchromium_src-b023f54b512c332cdf27ee872a703eedb1f97e75.zip
chromium_src-b023f54b512c332cdf27ee872a703eedb1f97e75.tar.gz
chromium_src-b023f54b512c332cdf27ee872a703eedb1f97e75.tar.bz2
chromeos: Fix memory leak in blocking Cryptohome method call
BUG=None TEST=Can browse chromeos://cryptohome Review URL: https://chromiumcodereview.appspot.com/9891001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@129565 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/chromeos/dbus/cryptohome_client.cc8
-rw-r--r--dbus/object_proxy.h1
2 files changed, 5 insertions, 4 deletions
diff --git a/chrome/browser/chromeos/dbus/cryptohome_client.cc b/chrome/browser/chromeos/dbus/cryptohome_client.cc
index b2c3a78..75bfbc2 100644
--- a/chrome/browser/chromeos/dbus/cryptohome_client.cc
+++ b/chrome/browser/chromeos/dbus/cryptohome_client.cc
@@ -382,10 +382,10 @@ class CryptohomeClientImpl : public CryptohomeClient {
bool* success,
dbus::MethodCall* method_call,
base::Callback<bool(dbus::MessageReader*)> callback) {
- dbus::Response* response = proxy_->CallMethodAndBlock(
- method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT);
- if (response) {
- dbus::MessageReader reader(response);
+ scoped_ptr<dbus::Response> response(proxy_->CallMethodAndBlock(
+ method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT));
+ if (response.get()) {
+ dbus::MessageReader reader(response.get());
*success = callback.Run(&reader);
}
}
diff --git a/dbus/object_proxy.h b/dbus/object_proxy.h
index 6c786ab4..eb09b8c0 100644
--- a/dbus/object_proxy.h
+++ b/dbus/object_proxy.h
@@ -75,6 +75,7 @@ class ObjectProxy : public base::RefCountedThreadSafe<ObjectProxy> {
// Calls the method of the remote object and blocks until the response
// is returned. Returns NULL on error.
+ // The caller is responsible to delete the returned object.
//
// BLOCKING CALL.
virtual Response* CallMethodAndBlock(MethodCall* method_call,