feat(c-wrapper): setCppPtrFromC is more secure, check types

This commit is contained in:
Ronan Abhamon 2017-09-26 15:55:21 +02:00
parent 38a9ac162a
commit f3b3015dbc
2 changed files with 3 additions and 2 deletions

View file

@ -41,6 +41,7 @@
F(Participant, Participant)
#define L_REGISTER_SUBTYPES(F) \
F(ChatRoom, BasicChatRoom) \
F(ChatRoom, ClientGroupChatRoom) \
F(ChatRoom, RealTimeTextChatRoom)

View file

@ -143,7 +143,7 @@ public:
template<
typename CppType,
typename = typename std::enable_if<std::is_base_of<Object, CppType>::value, CppType>::type
typename = typename std::enable_if<IsDefinedNotClonableCppObject<CppType>::value, CppType>::type
>
static inline void setCppPtrFromC (void *cObject, const std::shared_ptr<CppType> &cppObject) {
static_cast<WrappedObject<CppType> *>(cObject)->cppPtr = cppObject;
@ -152,7 +152,7 @@ public:
template<
typename CppType,
typename = typename std::enable_if<std::is_base_of<ClonableObject, CppType>::value, CppType>::type
typename = typename std::enable_if<IsDefinedClonableCppObject<CppType>::value, CppType>::type
>
static inline void setCppPtrFromC (void *cObject, const CppType *cppObject) {
CppType **cppObjectAddr = &static_cast<WrappedClonableObject<CppType> *>(cObject)->cppPtr;