diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-09-16 00:39:23 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-09-16 00:49:59 +0300 |
commit | e3ff9b2044666ae04fc614a37e59e3dd01eeab4f (patch) | |
tree | 6d4a45bce43fe58180f89cfc4877cfe33b589623 /source/blender/makesdna | |
parent | 7f63eaafd640a0b93492e0383265dd8f38d568bc (diff) |
Fix T46073: crash w/ out-of-bounds material
Diffstat (limited to 'source/blender/makesdna')
-rw-r--r-- | source/blender/makesdna/DNA_meshdata_types.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/source/blender/makesdna/DNA_meshdata_types.h b/source/blender/makesdna/DNA_meshdata_types.h index b78cd65e913..e5cb222bdd8 100644 --- a/source/blender/makesdna/DNA_meshdata_types.h +++ b/source/blender/makesdna/DNA_meshdata_types.h @@ -446,6 +446,16 @@ enum { /* number of tri's that make up this polygon once tessellated */ #define ME_POLY_TRI_TOT(mp) ((mp)->totloop - 2) +/** + * Check out-of-bounds material, note that this is nearly always prevented, + * yet its still possible in rare cases. + * So usage such as array lookup needs to check. + */ +#define ME_MAT_NR_TEST(mat_nr, totmat) \ + (CHECK_TYPE_ANY(mat_nr, short), \ + CHECK_TYPE_ANY(totmat, short), \ + (LIKELY(mat_nr < totmat) ? mat_nr : 0)) + /* mselect->type */ enum { ME_VSEL = 0, |