Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-11-08 14:32:11 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-11-08 14:32:11 +0400
commitae06e2cf9b932dc2b9d182aba8b7d1c62cc7f235 (patch)
tree652d60fd087e31926a0d0ed3e2d5da53acbb1e93 /source/blender/bmesh
parent03d0040fe7936239c8f51988cb9fd36c8a5d05dd (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.c16
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)