[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