This commit is contained in:
aleks-f 2013-02-17 17:05:36 -06:00
Родитель 9378680c0b
Коммит f78a4e8965
2 изменённых файлов: 18 добавлений и 10 удалений

Просмотреть файл

@ -572,6 +572,11 @@ private:
return _pHolder;
}
void destruct()
{
if(!isEmpty()) delete content();
}
VarHolder* _pHolder;
#else
@ -619,6 +624,17 @@ private:
_placeholder.erase();
}
void destruct()
{
if(!isEmpty())
{
if(_placeholder.isLocal())
content()->~VarHolder();
else
delete content();
}
}
Placeholder<VarHolder> _placeholder;
#endif // POCO_NO_SOO
@ -652,7 +668,7 @@ inline void Var::swap(Var& other)
else
{
Var tmp(*this);
if (_placeholder.isLocal()) this->~Var();
if (_placeholder.isLocal()) destruct();
construct(other);
other = tmp;
}

Просмотреть файл

@ -79,15 +79,7 @@ Var::Var(const Var& other)
Var::~Var()
{
if(!isEmpty())
{
#ifndef POCO_NO_SOO
if(_placeholder.isLocal())
content()->~VarHolder();
else
#endif
delete content();
}
destruct();
}