mirror of
https://github.com/pocoproject/poco.git
synced 2025-01-06 00:31:10 +01:00
factor out Var destruction
This commit is contained in:
parent
9378680c0b
commit
f78a4e8965
@ -572,6 +572,11 @@ private:
|
|||||||
return _pHolder;
|
return _pHolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void destruct()
|
||||||
|
{
|
||||||
|
if(!isEmpty()) delete content();
|
||||||
|
}
|
||||||
|
|
||||||
VarHolder* _pHolder;
|
VarHolder* _pHolder;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
@ -619,6 +624,17 @@ private:
|
|||||||
_placeholder.erase();
|
_placeholder.erase();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void destruct()
|
||||||
|
{
|
||||||
|
if(!isEmpty())
|
||||||
|
{
|
||||||
|
if(_placeholder.isLocal())
|
||||||
|
content()->~VarHolder();
|
||||||
|
else
|
||||||
|
delete content();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Placeholder<VarHolder> _placeholder;
|
Placeholder<VarHolder> _placeholder;
|
||||||
|
|
||||||
#endif // POCO_NO_SOO
|
#endif // POCO_NO_SOO
|
||||||
@ -652,7 +668,7 @@ inline void Var::swap(Var& other)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
Var tmp(*this);
|
Var tmp(*this);
|
||||||
if (_placeholder.isLocal()) this->~Var();
|
if (_placeholder.isLocal()) destruct();
|
||||||
construct(other);
|
construct(other);
|
||||||
other = tmp;
|
other = tmp;
|
||||||
}
|
}
|
||||||
|
@ -79,15 +79,7 @@ Var::Var(const Var& other)
|
|||||||
|
|
||||||
Var::~Var()
|
Var::~Var()
|
||||||
{
|
{
|
||||||
if(!isEmpty())
|
destruct();
|
||||||
{
|
|
||||||
#ifndef POCO_NO_SOO
|
|
||||||
if(_placeholder.isLocal())
|
|
||||||
content()->~VarHolder();
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
delete content();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user