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