diff options
Diffstat (limited to 'sord')
-rw-r--r-- | sord/sordmm.hpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/sord/sordmm.hpp b/sord/sordmm.hpp index ba59ed9..4f3b609 100644 --- a/sord/sordmm.hpp +++ b/sord/sordmm.hpp @@ -171,12 +171,14 @@ public: } } - const Node& operator=(const Node& other) { - if (_c_obj) { - sord_node_free(_world->c_obj(), _c_obj); + Node& operator=(const Node& other) { + if (&other != this) { + if (_c_obj) { + sord_node_free(_world->c_obj(), _c_obj); + } + _world = other._world; + _c_obj = other._c_obj ? sord_node_copy(other._c_obj) : NULL; } - _world = other._world; - _c_obj = other._c_obj ? sord_node_copy(other._c_obj) : NULL; return *this; } |