Skip to content
Snippets Groups Projects
Commit 24c35c26 authored by Axel Naumann's avatar Axel Naumann
Browse files

Fix ROOT-5659 by providing a fallback op new with placement.

parent 3dcfe3ce
No related branches found
No related tags found
No related merge requests found
...@@ -31,6 +31,7 @@ public: ...@@ -31,6 +31,7 @@ public:
#ifdef USEMEMPOOL #ifdef USEMEMPOOL
void* operator new (size_t bytes); void* operator new (size_t bytes);
void* operator new (size_t bytes, void* ptr) noexcept;
void operator delete (void *ptr); void operator delete (void *ptr);
#endif #endif
......
...@@ -160,6 +160,15 @@ void* RooArgSet::operator new (size_t bytes) ...@@ -160,6 +160,15 @@ void* RooArgSet::operator new (size_t bytes)
} }
//_____________________________________________________________________________
void* RooArgSet::operator new (size_t bytes, void* ptr) noexcept
{
// Overloaded new operator with placement does not guarante that all
// RooArgSets allocated with new have a unique address, but uses the global
// operator.
return ::operator new (bytes, ptr);
}
//_____________________________________________________________________________ //_____________________________________________________________________________
void RooArgSet::operator delete (void* ptr) void RooArgSet::operator delete (void* ptr)
...@@ -170,10 +179,11 @@ void RooArgSet::operator delete (void* ptr) ...@@ -170,10 +179,11 @@ void RooArgSet::operator delete (void* ptr)
for (std::list<POOLDATA>::iterator poolIter = _memPoolList.begin() ; poolIter!=_memPoolList.end() ; ++poolIter) { for (std::list<POOLDATA>::iterator poolIter = _memPoolList.begin() ; poolIter!=_memPoolList.end() ; ++poolIter) {
if ((char*)ptr > (char*)poolIter->_base && (char*)ptr < (char*)poolIter->_base + POOLSIZE) { if ((char*)ptr > (char*)poolIter->_base && (char*)ptr < (char*)poolIter->_base + POOLSIZE) {
(*(Int_t*)(poolIter->_base))-- ; (*(Int_t*)(poolIter->_base))-- ;
break ; return ;
} }
} }
// Not part of any pool; use global op delete:
::operator delete(ptr);
} }
#endif #endif
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment