[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55292] trunk/blender/source/blender/ editors/mesh/editmesh_tools.c: Fix #34633: Merge First/Last crashes Blender

Sergey Sharybin sergey.vfx at gmail.com
Fri Mar 15 08:08:00 CET 2013


Revision: 55292
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55292
Author:   nazgul
Date:     2013-03-15 07:08:00 +0000 (Fri, 15 Mar 2013)
Log Message:
-----------
Fix #34633: Merge First/Last crashes Blender

It was check happening when generating menu with available modes
for merge operator, but no checks happened when executing operator.

Since operator could be called from python or shortcut, it was
possible to bypass all the checks.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/mesh/editmesh_tools.c

Modified: trunk/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_tools.c	2013-03-15 00:30:20 UTC (rev 55291)
+++ trunk/blender/source/blender/editors/mesh/editmesh_tools.c	2013-03-15 07:08:00 UTC (rev 55292)
@@ -2160,12 +2160,22 @@
 	BMVert *mergevert;
 	BMEditSelection *ese;
 
+	/* operator could be called directly from shortcut or python,
+	 * so do extra check for data here
+	 */
+
 	/* do sanity check in mergemenu in edit.c ?*/
 	if (first == 0) {
+		if (!em->bm->selected.last || ((BMEditSelection *)em->bm->selected.last)->htype != BM_VERT)
+			return OPERATOR_CANCELLED;
+
 		ese = em->bm->selected.last;
 		mergevert = (BMVert *)ese->ele;
 	}
 	else {
+		if (!em->bm->selected.first || ((BMEditSelection *)em->bm->selected.first)->htype != BM_VERT)
+			return OPERATOR_CANCELLED;
+
 		ese = em->bm->selected.first;
 		mergevert = (BMVert *)ese->ele;
 	}




More information about the Bf-blender-cvs mailing list