forked from bartvdbraak/blender
Fix for invalid void* to typed pointer assignment in bmesh when used in C++ code.
C++ does not allow the assignment of a void pointer to a typed pointer without explicit casting. Since we use a generic macro in bmesh for iterators we only ever get a void* back and cannot cast it to the target type. However, casting the target to a void* as well solves that issue. This tweak is #ifdef'd to be used in C++ code only.
This commit is contained in:
parent
e301fcf8e7
commit
8729e23f2d
@ -276,8 +276,16 @@ enum {
|
||||
#define BM_CHECK_TYPE_ELEM(ele) \
|
||||
CHECK_TYPE_ANY(ele, _BM_GENERIC_TYPE_ELEM_NONCONST, _BM_GENERIC_TYPE_ELEM_CONST)
|
||||
|
||||
/* Assignment from a void* to a typed pointer is not allowed in C++,
|
||||
* casting the LHS to void works fine though.
|
||||
*/
|
||||
#ifdef __cplusplus
|
||||
#define BM_CHECK_TYPE_ELEM_ASSIGN(ele) \
|
||||
(BM_CHECK_TYPE_ELEM(ele)), *((void **)&ele)
|
||||
#else
|
||||
#define BM_CHECK_TYPE_ELEM_ASSIGN(ele) \
|
||||
(BM_CHECK_TYPE_ELEM(ele)), ele
|
||||
#endif
|
||||
|
||||
/* BMHeader->hflag (char) */
|
||||
enum {
|
||||
|
Loading…
Reference in New Issue
Block a user