diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-11-08 14:32:11 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-11-08 14:32:11 +0400 |
commit | ae06e2cf9b932dc2b9d182aba8b7d1c62cc7f235 (patch) | |
tree | 652d60fd087e31926a0d0ed3e2d5da53acbb1e93 /source/blender/bmesh | |
parent | 03d0040fe7936239c8f51988cb9fd36c8a5d05dd (diff) |
fix [#33000] bmesh.ops.create_* either crash blender or do nothing
Diffstat (limited to 'source/blender/bmesh')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_operators.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/source/blender/bmesh/intern/bmesh_operators.c b/source/blender/bmesh/intern/bmesh_operators.c index 4cc946a3a40..9d1054dc042 100644 --- a/source/blender/bmesh/intern/bmesh_operators.c +++ b/source/blender/bmesh/intern/bmesh_operators.c @@ -354,7 +354,7 @@ void BMO_slot_mat_set(BMOperator *op, const char *slot_name, const float *mat, i else { fprintf(stderr, "%s: invalid size argument %d (bmesh internal error)\n", __func__, size); - memset(slot->data.p, 0, sizeof(float) * 4 * 4); + zero_m4(slot->data.p); } } @@ -365,7 +365,12 @@ void BMO_slot_mat4_get(BMOperator *op, const char *slot_name, float r_mat[4][4]) if (!(slot->slot_type == BMO_OP_SLOT_MAT)) return; - copy_m4_m4(r_mat, (float (*)[4])slot->data.p); + if (slot->data.p) { + copy_m4_m4(r_mat, (float (*)[4])slot->data.p); + } + else { + unit_m4(r_mat); + } } void BMO_slot_mat3_set(BMOperator *op, const char *slot_name, float r_mat[3][3]) @@ -375,7 +380,12 @@ void BMO_slot_mat3_set(BMOperator *op, const char *slot_name, float r_mat[3][3]) if (!(slot->slot_type == BMO_OP_SLOT_MAT)) return; - copy_m3_m4(r_mat, slot->data.p); + if (slot->data.p) { + copy_m3_m4(r_mat, slot->data.p); + } + else { + unit_m3(r_mat); + } } void BMO_slot_ptr_set(BMOperator *op, const char *slot_name, void *p) |