Code cleanup: remove redundant arg from ARRAY_LAST_ITEM
authorCampbell Barton <ideasman42@gmail.com>
Thu, 29 May 2014 03:38:34 +0000 (13:38 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Fri, 13 Jun 2014 14:47:11 +0000 (00:47 +1000)
source/blender/blenkernel/intern/fcurve.c
source/blender/blenlib/BLI_utildefines.h

index d7d46427b8c91de89dedb1e30de48c3abc7c4565..a8de9b69fbef56bb1b241cdfef3b670d12eba99a 100644 (file)
@@ -469,7 +469,7 @@ static short get_fcurve_end_keyframes(FCurve *fcu, BezTriple **first, BezTriple
                }
                
                /* find last selected */
-               bezt = ARRAY_LAST_ITEM(fcu->bezt, BezTriple, sizeof(BezTriple), fcu->totvert);
+               bezt = ARRAY_LAST_ITEM(fcu->bezt, BezTriple, fcu->totvert);
                for (i = 0; i < fcu->totvert; bezt--, i++) {
                        if (BEZSELECTED(bezt)) {
                                *last = bezt;
@@ -481,7 +481,7 @@ static short get_fcurve_end_keyframes(FCurve *fcu, BezTriple **first, BezTriple
        else {
                /* just full array */
                *first = fcu->bezt;
-               *last = ARRAY_LAST_ITEM(fcu->bezt, BezTriple, sizeof(BezTriple), fcu->totvert);
+               *last = ARRAY_LAST_ITEM(fcu->bezt, BezTriple, fcu->totvert);
                found = true;
        }
        
index af192d1336934393a807cda3073c2637bda36bff..747db558af7b364415722d99aa7b5bdc5a4a3181 100644 (file)
        __tmp = (__typeof(var_b) *)NULL;      \
        (void)__tmp;                          \
 } (void)0
+
+#define CHECK_TYPE_PAIR_INLINE(var_a, var_b)  ((void)({  \
+       __typeof(var_a) *__tmp;                              \
+       __tmp = (__typeof(var_b) *)NULL;                     \
+       (void)__tmp;                                         \
+}))
+
 #else
 #  define CHECK_TYPE(var, type)
 #  define CHECK_TYPE_PAIR(var_a, var_b)
+#  define CHECK_TYPE_PAIR_INLINE(var_a, var_b)
 #endif
 
 /* can be used in simple macros */
 #endif
 
 /* array helpers */
-#define ARRAY_LAST_ITEM(arr_start, arr_dtype, elem_size, tot) \
-       (arr_dtype *)((char *)arr_start + (elem_size * (tot - 1)))
+#define ARRAY_LAST_ITEM(arr_start, arr_dtype, tot) \
+       (arr_dtype *)((char *)arr_start + (sizeof(*((arr_dtype *)NULL)) * (size_t)(tot - 1)))
 
-#define ARRAY_HAS_ITEM(arr_item, arr_start, tot) \
-       ((unsigned int)((arr_item) - (arr_start)) < (unsigned int)(tot))
+#define ARRAY_HAS_ITEM(arr_item, arr_start, tot)  ( \
+       CHECK_TYPE_PAIR_INLINE(arr_start, arr_item), \
+       ((unsigned int)((arr_item) - (arr_start)) < (unsigned int)(tot)))
 
 #define ARRAY_DELETE(arr, index, tot_delete, tot)  { \
                BLI_assert(index + tot_delete <= tot);  \