diff --git a/src/types.cc b/src/types.cc index e299a79..64f3529 100644 --- a/src/types.cc +++ b/src/types.cc @@ -48,6 +48,12 @@ namespace pEp free_message(m); } + template<> + ::message* Wrapper<::message*>::copy_out() const + { + return ::message_dup(value); + } + //////////////// template<> @@ -85,6 +91,11 @@ namespace pEp free_stringpair(sp); } + template<> + ::stringpair_t* Wrapper<::stringpair_t*>::copy_out() const + { + return ::stringpair_dup(value); + } template<> void Wrapper<::stringpair_list_t*>::_free(::stringpair_list_t* spl) diff --git a/src/wrapper.hh b/src/wrapper.hh index ffb78c2..c75c02f 100644 --- a/src/wrapper.hh +++ b/src/wrapper.hh @@ -63,13 +63,13 @@ public: Wrapper(Args... args) : value{ this->_new(args...) } {} // move is easy, efficient and generic: - Wrapper(Wrapper&& victim) + Wrapper(Wrapper&& victim) noexcept : value{ victim.value} { victim.value = nullptr; } - Wrapper& operator=(Wrapper&& victim) + Wrapper& operator=(Wrapper&& victim) noexcept { _free(value); value = victim.value;