diff --git a/src/c-wrapper/internal/c-tools.h b/src/c-wrapper/internal/c-tools.h index 5e371372d..eb2348975 100644 --- a/src/c-wrapper/internal/c-tools.h +++ b/src/c-wrapper/internal/c-tools.h @@ -244,6 +244,8 @@ public: static inline typename CppTypeMetaInfo::cType *getCBackPtr (const std::shared_ptr &cppObject) { typedef typename CppTypeMetaInfo::cType RetType; + if (!cppObject) return nullptr; + Variant variant = cppObject->getProperty("LinphonePrivate::Wrapper::cBackPtr"); void *value = variant.getValue(); if (value) @@ -259,6 +261,7 @@ public: typename = typename std::enable_if::value, CppType>::type > static inline typename CppTypeMetaInfo::cType *getCBackPtr (CppType *cppObject) { + if (!cppObject) return nullptr; try { return getCBackPtr(std::static_pointer_cast(cppObject->shared_from_this())); } catch (const std::bad_weak_ptr &e) { @@ -275,6 +278,7 @@ public: > static inline typename CppTypeMetaInfo::cType *getCBackPtr (const CppType *cppObject) { typedef typename CppTypeMetaInfo::cType RetType; + if (!cppObject) return nullptr; Variant variant = cppObject->getProperty("LinphonePrivate::Wrapper::cBackPtr"); void *value = variant.getValue();