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)
|
Wrapper(const Wrapper & wrapper)
|
||||||
{
|
{
|
||||||
operator=(wrapper);
|
model = nullptr;
|
||||||
|
model_container_wrapper = nullptr;
|
||||||
|
date = nullptr;
|
||||||
|
space_wrapper = nullptr;
|
||||||
|
|
||||||
|
copy(wrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Wrapper & operator=(const Wrapper & wrapper)
|
Wrapper & operator=(const Wrapper & wrapper)
|
||||||
{
|
{
|
||||||
model = wrapper.model;
|
clear();
|
||||||
model_container_wrapper = wrapper.model_container_wrapper;
|
copy(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
|
|
||||||
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
@ -129,7 +120,6 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
virtual void clear_childs()
|
virtual void clear_childs()
|
||||||
{
|
{
|
||||||
childs_map.clear();
|
childs_map.clear();
|
||||||
|
@ -174,6 +164,26 @@ private:
|
||||||
|
|
||||||
std::map<std::wstring, Wrapper> childs_map;
|
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