summaryrefslogtreecommitdiffstats
path: root/base/callback_internal.cc
diff options
context:
space:
mode:
authorsail@chromium.org <sail@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-14 21:48:54 +0000
committersail@chromium.org <sail@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-14 21:48:54 +0000
commit115288648041898b6d50f7d2e17391e2d1972a76 (patch)
treeeee67d927a7ebb40e87848924a8f26c5c5cb99ca /base/callback_internal.cc
parente91ac22d99252095839ca7c82c092972bd56445e (diff)
downloadchromium_src-115288648041898b6d50f7d2e17391e2d1972a76.zip
chromium_src-115288648041898b6d50f7d2e17391e2d1972a76.tar.gz
chromium_src-115288648041898b6d50f7d2e17391e2d1972a76.tar.bz2
Revert 114494 - Remove BindStateHolder and have Bind() return a Callback<> object directly.
This removes some complexity and also fixes a bug where if you call Bind() with the result of Bind(), the resulting Callback would only be valid during the first call. Ouch. BUG=none TEST=new unittests Review URL: http://codereview.chromium.org/8738001 TBR=ajwong@chromium.org Review URL: http://codereview.chromium.org/8914022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@114495 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/callback_internal.cc')
-rw-r--r--base/callback_internal.cc12
1 files changed, 6 insertions, 6 deletions
diff --git a/base/callback_internal.cc b/base/callback_internal.cc
index a483293..582fbdc 100644
--- a/base/callback_internal.cc
+++ b/base/callback_internal.cc
@@ -4,8 +4,6 @@
#include "base/callback_internal.h"
-#include "base/logging.h"
-
namespace base {
namespace internal {
@@ -23,10 +21,12 @@ bool CallbackBase::Equals(const CallbackBase& other) const {
polymorphic_invoke_ == other.polymorphic_invoke_;
}
-CallbackBase::CallbackBase(BindStateBase* bind_state)
- : bind_state_(bind_state),
- polymorphic_invoke_(NULL) {
- DCHECK(!bind_state_ || bind_state_->HasOneRef());
+CallbackBase::CallbackBase(InvokeFuncStorage polymorphic_invoke,
+ scoped_refptr<BindStateBase>* bind_state)
+ : polymorphic_invoke_(polymorphic_invoke) {
+ if (bind_state) {
+ bind_state_.swap(*bind_state);
+ }
}
CallbackBase::~CallbackBase() {