Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:npaxton
openwbem
openwbem-3.1.0-friend-injection.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File openwbem-3.1.0-friend-injection.patch of Package openwbem
--- ./src/common/OW_COWIntrusiveCountableBase.hpp.friend_orig 2005-10-19 17:38:49.000000000 -0600 +++ ./src/common/OW_COWIntrusiveCountableBase.hpp 2005-10-19 17:38:17.000000000 -0600 @@ -57,6 +57,12 @@ * * Derived classes must implement: Derived* clone() */ +class COWIntrusiveCountableBase; +void COWIntrusiveReferenceAddRef(COWIntrusiveCountableBase * p); +void COWIntrusiveReferenceRelease(COWIntrusiveCountableBase * p); +bool COWIntrusiveReferenceUnique(COWIntrusiveCountableBase* p); +template <typename T> T* COWIntrusiveReferenceClone(T* p); + class OW_COMMON_API COWIntrusiveCountableBase { private: @@ -100,30 +106,32 @@ { return p->m_usecount.get() == 1; } - template <typename T> - inline friend T* COWIntrusiveReferenceClone(T* p) + friend T* COWIntrusiveReferenceClone(T* p); + +}; +template <typename T> +inline T* COWIntrusiveReferenceClone(T* p) +{ + // this needs to happen first to avoid a race condition between + // another thread deleting the object and this one making a copy. + T* tmp = p->clone(); + if (p->m_usecount.decAndTest()) { - // this needs to happen first to avoid a race condition between - // another thread deleting the object and this one making a copy. - T* tmp = p->clone(); - if (p->m_usecount.decAndTest()) - { - // only copy--don't need to clone, also not a race condition. - // undo the decAndTest. - p->m_usecount.inc(); - delete tmp; // we won't need this anymore. - return p; - } - else - { - // need to become unique - if (tmp) COWIntrusiveReferenceAddRef(tmp); + // only copy--don't need to clone, also not a race condition. + // undo the decAndTest. + p->m_usecount.inc(); + delete tmp; // we won't need this anymore. + return p; + } + else + { + // need to become unique + if (tmp) COWIntrusiveReferenceAddRef(tmp); - return tmp; - } + return tmp; } -}; +} } // end namespace OpenWBEM --- ./src/common/OW_IntrusiveCountableBase.hpp.friend_orig 2005-10-19 17:39:18.000000000 -0600 +++ ./src/common/OW_IntrusiveCountableBase.hpp 2005-10-19 17:39:55.000000000 -0600 @@ -55,6 +55,11 @@ * from this class. Note that if multiple inheritance is used, you must derive * "virtual"ly. */ + +class IntrusiveCountableBase; +void IntrusiveReferenceAddRef(IntrusiveCountableBase * p); +void IntrusiveReferenceRelease(IntrusiveCountableBase * p); + class OW_COMMON_API IntrusiveCountableBase { private: --- ./src/providerifcs/cmpi/common/cmpiThreadContext.h.friend_orig 2004-08-04 14:20:10.000000000 -0600 +++ ./src/providerifcs/cmpi/common/cmpiThreadContext.h 2005-10-19 14:15:59.000000000 -0600 @@ -32,6 +32,7 @@ #include "cmpift.h" #include "cmpisrv.h" +void initializeTheKey(); class CMPI_ThreadContext { static pthread_key_t theKey;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor