[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11886] branches/2-44-stable/blender: fix segfault in Python NLA, was missing a null check when looping through actions.

Campbell Barton cbarton at metavr.com
Wed Aug 29 20:47:10 CEST 2007


Revision: 11886
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11886
Author:   campbellbarton
Date:     2007-08-29 20:47:10 +0200 (Wed, 29 Aug 2007)

Log Message:
-----------
fix segfault in Python NLA, was missing a null check when looping through actions.
FBX export also raised an error when actions had no frames

Modified Paths:
--------------
    branches/2-44-stable/blender/release/scripts/export_fbx.py
    branches/2-44-stable/blender/source/blender/python/api2_2x/NLA.c

Modified: branches/2-44-stable/blender/release/scripts/export_fbx.py
===================================================================
--- branches/2-44-stable/blender/release/scripts/export_fbx.py	2007-08-29 17:50:22 UTC (rev 11885)
+++ branches/2-44-stable/blender/release/scripts/export_fbx.py	2007-08-29 18:47:10 UTC (rev 11886)
@@ -2148,7 +2148,7 @@
 			Property: "FrontAxisSign", "int", "",1
 			Property: "CoordAxis", "int", "",0
 			Property: "CoordAxisSign", "int", "",1
-			Property: "UnitScaleFactor", "double", "",1
+			Property: "UnitScaleFactor", "double", "",100
 		}
 	}
 ''')	
@@ -2399,9 +2399,15 @@
 					file.write('\n\tTake: "%s" {' % sane_takename(blenAction))
 					
 				tmp = blenAction.getFrameNumbers()
-				act_start =	min(tmp)
-				act_end =	max(tmp)
-				del tmp
+				if tmp:
+					act_start =	min(tmp)
+					act_end =	max(tmp)
+					del tmp
+				else:
+					# Fallback on this, theres not much else we can do? :/
+					# when an action has no length
+					act_start =	start
+					act_end =	end
 				
 				# Set the action active
 				for my_bone in ob_arms:
@@ -2902,7 +2908,7 @@
 		if GLOBALS['EVENT'] == EVENT_FILESEL:
 			if GLOBALS['BATCH_ENABLE'].val:
 				txt = 'Batch FBX Dir'
-				name = ''
+				name = Blender.sys.expandpath('//')
 			else:
 				txt = 'Export FBX'
 				name = Blender.sys.makename(ext='.fbx')

Modified: branches/2-44-stable/blender/source/blender/python/api2_2x/NLA.c
===================================================================
--- branches/2-44-stable/blender/source/blender/python/api2_2x/NLA.c	2007-08-29 17:50:22 UTC (rev 11885)
+++ branches/2-44-stable/blender/source/blender/python/api2_2x/NLA.c	2007-08-29 18:47:10 UTC (rev 11886)
@@ -221,18 +221,20 @@
 	
 	py_list = PyList_New(0);
 	for(achan = self->action->chanbase.first; achan; achan = achan->next){
-		for (icu = achan->ipo->curve.first; icu; icu = icu->next){
-			bezt= icu->bezt;
-			if(bezt) {
-				verts = icu->totvert;
-				while(verts--) {
-					PyObject *value;
-					value = PyInt_FromLong((int)bezt->vec[1][0]);
-					if ( PySequence_Contains(py_list, value) == 0){
-						PyList_Append(py_list, value);
+		if (achan->ipo) {
+			for (icu = achan->ipo->curve.first; icu; icu = icu->next){
+				bezt= icu->bezt;
+				if(bezt) {
+					verts = icu->totvert;
+					while(verts--) {
+						PyObject *value;
+						value = PyInt_FromLong((int)bezt->vec[1][0]);
+						if ( PySequence_Contains(py_list, value) == 0){
+							PyList_Append(py_list, value);
+						}
+						Py_DECREF(value);
+						bezt++;
 					}
-					Py_DECREF(value);
-					bezt++;
 				}
 			}
 		}





More information about the Bf-blender-cvs mailing list