|
|
|
@ -1131,17 +1131,24 @@ public: |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
static TLSContainerStorage tlsContainerStorage; |
|
|
|
|
|
|
|
|
|
// This is a wrapper function that will ensure 'tlsContainerStorage' is constructed on first use.
|
|
|
|
|
// For more information: http://www.parashift.com/c++-faq/static-init-order-on-first-use.html
|
|
|
|
|
static TLSContainerStorage& getTLSContainerStorage() |
|
|
|
|
{ |
|
|
|
|
static TLSContainerStorage *tlsContainerStorage = new TLSContainerStorage(); |
|
|
|
|
return *tlsContainerStorage; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TLSDataContainer::TLSDataContainer() |
|
|
|
|
: key_(-1) |
|
|
|
|
{ |
|
|
|
|
key_ = tlsContainerStorage.allocateKey(this); |
|
|
|
|
key_ = getTLSContainerStorage().allocateKey(this); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TLSDataContainer::~TLSDataContainer() |
|
|
|
|
{ |
|
|
|
|
tlsContainerStorage.releaseKey(key_, this); |
|
|
|
|
getTLSContainerStorage().releaseKey(key_, this); |
|
|
|
|
key_ = -1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -1166,7 +1173,7 @@ TLSStorage::~TLSStorage() |
|
|
|
|
void*& data = tlsData_[i]; |
|
|
|
|
if (data) |
|
|
|
|
{ |
|
|
|
|
tlsContainerStorage.destroyData(i, data); |
|
|
|
|
getTLSContainerStorage().destroyData(i, data); |
|
|
|
|
data = NULL; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|