[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52003] trunk/blender/source/blender/bmesh /intern/bmesh_operators.c: fix [#33000] bmesh.ops. create_* either crash blender or do nothing

Campbell Barton ideasman42 at gmail.com
Thu Nov 8 11:32:13 CET 2012


Revision: 52003
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52003
Author:   campbellbarton
Date:     2012-11-08 10:32:11 +0000 (Thu, 08 Nov 2012)
Log Message:
-----------
fix [#33000] bmesh.ops.create_* either crash blender or do nothing

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/intern/bmesh_operators.c

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_operators.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_operators.c	2012-11-08 09:38:18 UTC (rev 52002)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_operators.c	2012-11-08 10:32:11 UTC (rev 52003)
@@ -354,7 +354,7 @@
 	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 @@
 	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 @@
 	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)




More information about the Bf-blender-cvs mailing list