[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47291] trunk/blender/source/blender/ editors/transform/transform.c: Fix #31634: crash calling bpy.ops.transform. edge_slide() outside 3d view.

Brecht Van Lommel brechtvanlommel at pandora.be
Thu May 31 21:06:53 CEST 2012


Revision: 47291
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47291
Author:   blendix
Date:     2012-05-31 19:06:52 +0000 (Thu, 31 May 2012)
Log Message:
-----------
Fix #31634: crash calling bpy.ops.transform.edge_slide() outside 3d view.
Solution based on patch #31635 by Philipp Oeser.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/transform/transform.c

Modified: trunk/blender/source/blender/editors/transform/transform.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.c	2012-05-31 18:40:06 UTC (rev 47290)
+++ trunk/blender/source/blender/editors/transform/transform.c	2012-05-31 19:06:52 UTC (rev 47291)
@@ -4528,8 +4528,8 @@
 	BMBVHTree *btree = BMBVH_NewBVH(em, BMBVH_RESPECT_HIDDEN, NULL, NULL);
 	SmallHash table;
 	SlideData *sld = MEM_callocN(sizeof(*sld), "sld");
-	View3D *v3d = t->sa ? t->sa->spacedata.first : NULL;
-	RegionView3D *rv3d = t->ar ? t->ar->regiondata : NULL; /* background mode support */
+	View3D *v3d = NULL;
+	RegionView3D *rv3d = NULL;
 	ARegion *ar = t->ar;
 	float projectMat[4][4];
 	float mval[2] = {(float)t->mval[0], (float)t->mval[1]};
@@ -4537,11 +4537,17 @@
 	float vec[3], vec2[3], lastvec[3] /*, size, dis=0.0, z */ /* UNUSED */;
 	int numsel, i, j;
 
+	if (t->spacetype == SPACE_VIEW3D) {
+		/* background mode support */
+		v3d = t->sa ? t->sa->spacedata.first : NULL;
+		rv3d = t->ar ? t->ar->regiondata : NULL;
+	}
+
 	sld->is_proportional = TRUE;
 	sld->curr_sv_index = 0;
 	sld->flipped_vtx = FALSE;
 
-	if (!v3d) {
+	if (!rv3d) {
 		/* ok, let's try to survive this */
 		unit_m4(projectMat);
 	}
@@ -4741,7 +4747,7 @@
 					if (BM_elem_flag_test(e2, BM_ELEM_SELECT))
 						continue;
 					
-					if (!BMBVH_EdgeVisible(btree, e2, ar, v3d, t->obedit))
+					if (v3d && !BMBVH_EdgeVisible(btree, e2, ar, v3d, t->obedit))
 						continue;
 					
 					j = GET_INT_FROM_POINTER(BLI_smallhash_lookup(&table, (uintptr_t)v));
@@ -4804,9 +4810,9 @@
 		BLI_smallhash_insert(&sld->vhash, (uintptr_t)sv_array->v, sv_array);
 	}
 
-	calcNonProportionalEdgeSlide(t, sld, mval);
+	if (rv3d)
+		calcNonProportionalEdgeSlide(t, sld, mval);
 
-
 	sld->origfaces_init = TRUE;
 	sld->em = em;
 	




More information about the Bf-blender-cvs mailing list