[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51778] trunk/blender/source/blender: fix for crash in python matrix utility functions .inverted/adjugated/ transposed if the matrix has a read callback and fails.

Campbell Barton ideasman42 at gmail.com
Wed Oct 31 04:21:24 CET 2012


Revision: 51778
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51778
Author:   campbellbarton
Date:     2012-10-31 03:21:13 +0000 (Wed, 31 Oct 2012)
Log Message:
-----------
fix for crash in python matrix utility functions .inverted/adjugated/transposed if the matrix has a read callback and fails.
also replace DM_get_poly_data_layer with dm->getPolyDataArray() since this is the convention in subsurf code and the functions now added.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c
    trunk/blender/source/blender/python/mathutils/mathutils_Matrix.c

Modified: trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c	2012-10-30 22:45:08 UTC (rev 51777)
+++ trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c	2012-10-31 03:21:13 UTC (rev 51778)
@@ -602,7 +602,7 @@
 	}
 
 	mp = mpoly;
-	index = DM_get_poly_data_layer(dm, CD_ORIGINDEX);
+	index = (int *)dm->getPolyDataArray(dm, CD_ORIGINDEX);
 	for (i = 0; i < dm->numPolyData; i++, mp++) {
 		CCGFace *f;
 

Modified: trunk/blender/source/blender/python/mathutils/mathutils_Matrix.c
===================================================================
--- trunk/blender/source/blender/python/mathutils/mathutils_Matrix.c	2012-10-30 22:45:08 UTC (rev 51777)
+++ trunk/blender/source/blender/python/mathutils/mathutils_Matrix.c	2012-10-31 03:21:13 UTC (rev 51778)
@@ -384,13 +384,19 @@
 static PyObject *matrix__apply_to_copy(PyNoArgsFunction matrix_func, MatrixObject *self)
 {
 	PyObject *ret = Matrix_copy(self);
-	PyObject *ret_dummy = matrix_func(ret);
-	if (ret_dummy) {
-		Py_DECREF(ret_dummy);
-		return (PyObject *)ret;
+	if (ret) {
+		PyObject *ret_dummy = matrix_func(ret);
+		if (ret_dummy) {
+			Py_DECREF(ret_dummy);
+			return (PyObject *)ret;
+		}
+		else { /* error */
+			Py_DECREF(ret);
+			return NULL;
+		}
 	}
-	else { /* error */
-		Py_DECREF(ret);
+	else {
+		/* copy may fail if the read callback errors out */
 		return NULL;
 	}
 }




More information about the Bf-blender-cvs mailing list