diff options
author | hashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-29 03:22:20 +0000 |
---|---|---|
committer | hashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-29 03:22:20 +0000 |
commit | b023f54b512c332cdf27ee872a703eedb1f97e75 (patch) | |
tree | ca6105c52f1cbe3758146491a15054ab955c5e9a | |
parent | d6794885eb16bc311552888f1cd7556788b993f4 (diff) | |
download | chromium_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.cc | 8 | ||||
-rw-r--r-- | dbus/object_proxy.h | 1 |
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, |