Bugfixes.

[SVN r13541]
This commit is contained in:
Peter Dimov
2002-04-22 09:37:08 +00:00
parent fbc9028313
commit 4c5e355a0b
3 changed files with 12 additions and 8 deletions

View File

@ -43,6 +43,10 @@ public:
class counted_base class counted_base
{ {
private:
typedef detail::lightweight_mutex mutex_type;
public: public:
// pre: initial_use_count <= initial_weak_count // pre: initial_use_count <= initial_weak_count
@ -72,7 +76,7 @@ public:
void add_ref() void add_ref()
{ {
#ifdef BOOST_HAS_THREADS #ifdef BOOST_HAS_THREADS
lightweight_mutex::scoped_lock lock(mtx_); mutex_type::scoped_lock lock(mtx_);
#endif #endif
if(use_count_ == 0 && weak_count_ != 0) throw use_count_is_zero(); if(use_count_ == 0 && weak_count_ != 0) throw use_count_is_zero();
++use_count_; ++use_count_;
@ -86,7 +90,7 @@ public:
{ {
#ifdef BOOST_HAS_THREADS #ifdef BOOST_HAS_THREADS
lightweight_mutex::scoped_lock lock(mtx_); mutex_type::scoped_lock lock(mtx_);
#endif #endif
new_use_count = --use_count_; new_use_count = --use_count_;
new_weak_count = --weak_count_; new_weak_count = --weak_count_;
@ -108,7 +112,7 @@ public:
void weak_add_ref() // nothrow void weak_add_ref() // nothrow
{ {
#ifdef BOOST_HAS_THREADS #ifdef BOOST_HAS_THREADS
lightweight_mutex::scoped_lock lock(mtx_); mutex_type::scoped_lock lock(mtx_);
#endif #endif
++weak_count_; ++weak_count_;
} }
@ -119,7 +123,7 @@ public:
{ {
#ifdef BOOST_HAS_THREADS #ifdef BOOST_HAS_THREADS
lightweight_mutex::scoped_lock lock(mtx_); mutex_type::scoped_lock lock(mtx_);
#endif #endif
new_weak_count = --weak_count_; new_weak_count = --weak_count_;
} }
@ -133,7 +137,7 @@ public:
long use_count() const // nothrow long use_count() const // nothrow
{ {
#ifdef BOOST_HAS_THREADS #ifdef BOOST_HAS_THREADS
lightweight_mutex::scoped_lock lock(mtx_); mutex_type::scoped_lock lock(mtx_);
#endif #endif
return use_count_; return use_count_;
} }
@ -153,7 +157,7 @@ private:
long use_count_; long use_count_;
long weak_count_; long weak_count_;
#ifdef BOOST_HAS_THREADS #ifdef BOOST_HAS_THREADS
mutable lightweight_mutex mtx_; mutable mutex_type mtx_;
#endif #endif
void (*self_deleter_) (counted_base *); void (*self_deleter_) (counted_base *);
}; };

View File

@ -17,7 +17,7 @@
#ifdef BOOST_MSVC // moved here to work around VC++ compiler crash #ifdef BOOST_MSVC // moved here to work around VC++ compiler crash
# pragma warning(push) # pragma warning(push)
# pragma warning(disable:4284) // odd return type for operator-> # pragma warning(disable:4284) // odd return type for operator->
#endif #endif
#include <functional> // std::less #include <functional> // std::less

View File

@ -19,7 +19,7 @@
#ifdef BOOST_MSVC // moved here to work around VC++ compiler crash #ifdef BOOST_MSVC // moved here to work around VC++ compiler crash
# pragma warning(push) # pragma warning(push)
# pragma warning(disable:4284) // odd return type for operator-> # pragma warning(disable:4284) // odd return type for operator->
#endif #endif
namespace boost namespace boost
{ {