diff --git a/src/c-wrapper/internal/c-tools.h b/src/c-wrapper/internal/c-tools.h index 9a6c4458f..3bb01844d 100644 --- a/src/c-wrapper/internal/c-tools.h +++ b/src/c-wrapper/internal/c-tools.h @@ -67,15 +67,13 @@ public: template static inline decltype (std::declval().getPrivate()) getPrivate (T *cppObject) { - if (!cppObject) - return nullptr; + L_ASSERT(cppObject); return cppObject->getPrivate(); } template static inline decltype (std::declval().getPrivate()) getPrivate (const std::shared_ptr &cppObject) { - if (!cppObject) - return nullptr; + L_ASSERT(cppObject); return cppObject->getPrivate(); } @@ -143,13 +141,14 @@ public: > static inline void setCppPtrFromC (void *cObject, const CppType *cppObject) { L_ASSERT(cObject); - CppType *oldPtr = reinterpret_cast(static_cast *>(cObject)->cppPtr); - if (oldPtr != cppObject) { - delete oldPtr; - CppType **cppPtr = &static_cast *>(cObject)->cppPtr; - *cppPtr = new CppType(*cppObject); - (*cppPtr)->setProperty("LinphonePrivate::Wrapper::cBackPtr", cObject); - } + + CppType **cppObjectAddr = &static_cast *>(cObject)->cppPtr; + if (*cppObjectAddr == cppObject) + return; + delete *cppObjectAddr; + + *cppObjectAddr = new CppType(*cppObject); + (*cppObjectAddr)->setProperty("LinphonePrivate::Wrapper::cBackPtr", cObject); } // Macro helpers.