added clearing of existing objects in Wrapper::operator=(...)
This commit is contained in:
parent
dc6c70499c
commit
f4d92bec5d
|
@ -65,28 +65,19 @@ public:
|
|||
|
||||
Wrapper(const Wrapper & wrapper)
|
||||
{
|
||||
operator=(wrapper);
|
||||
model = nullptr;
|
||||
model_container_wrapper = nullptr;
|
||||
date = nullptr;
|
||||
space_wrapper = nullptr;
|
||||
|
||||
copy(wrapper);
|
||||
}
|
||||
|
||||
|
||||
Wrapper & operator=(const Wrapper & wrapper)
|
||||
{
|
||||
model = wrapper.model;
|
||||
model_container_wrapper = wrapper.model_container_wrapper;
|
||||
date = wrapper.date;
|
||||
space_wrapper = wrapper.space_wrapper;
|
||||
|
||||
if( model_container_wrapper )
|
||||
{
|
||||
model_container_wrapper->increment_reference_counter();
|
||||
}
|
||||
|
||||
if( space_wrapper )
|
||||
{
|
||||
space_wrapper->increment_reference_counter();
|
||||
}
|
||||
|
||||
// childs_map don't need to be copied
|
||||
clear();
|
||||
copy(wrapper);
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
@ -129,7 +120,6 @@ public:
|
|||
}
|
||||
|
||||
|
||||
|
||||
virtual void clear_childs()
|
||||
{
|
||||
childs_map.clear();
|
||||
|
@ -174,6 +164,26 @@ private:
|
|||
|
||||
std::map<std::wstring, Wrapper> childs_map;
|
||||
|
||||
|
||||
void copy(const Wrapper & wrapper)
|
||||
{
|
||||
model = wrapper.model;
|
||||
model_container_wrapper = wrapper.model_container_wrapper;
|
||||
date = wrapper.date;
|
||||
space_wrapper = wrapper.space_wrapper;
|
||||
|
||||
if( model_container_wrapper )
|
||||
{
|
||||
model_container_wrapper->increment_reference_counter();
|
||||
}
|
||||
|
||||
if( space_wrapper )
|
||||
{
|
||||
space_wrapper->increment_reference_counter();
|
||||
}
|
||||
|
||||
// childs_map don't need to be copied
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue