[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16629] trunk/blender/source/blender/ python/api2_2x/Scene.c: 16624 was incorrect.

Campbell Barton ideasman42 at gmail.com
Sat Sep 20 13:54:27 CEST 2008


Revision: 16629
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16629
Author:   campbellbarton
Date:     2008-09-20 13:54:27 +0200 (Sat, 20 Sep 2008)

Log Message:
-----------
16624 was incorrect. Blender wont always give the requested name for new datablocks or for renaming. scripts need to account for this.

Modified Paths:
--------------
    trunk/blender/source/blender/python/api2_2x/Scene.c

Modified: trunk/blender/source/blender/python/api2_2x/Scene.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Scene.c	2008-09-20 11:08:35 UTC (rev 16628)
+++ trunk/blender/source/blender/python/api2_2x/Scene.c	2008-09-20 11:54:27 UTC (rev 16629)
@@ -635,29 +635,24 @@
 /*-----------------------Scene.Get()------------------------------------*/
 static PyObject *M_Scene_Get( PyObject * self, PyObject * args )
 {
-	char *tname = NULL, name[22];
+	char *name = NULL;
 	Scene *scene_iter;
 
-	if( !PyArg_ParseTuple( args, "|s", &tname ) )
+	if( !PyArg_ParseTuple( args, "|s", &name ) )
 		return ( EXPP_ReturnPyObjError( PyExc_TypeError,
 						"expected string argument (or nothing)" ) );
-
-	strncpy(name, tname, 21);
-	if( strlen(tname) >= 21 ) name[21]= 0;
 	
 	scene_iter = G.main->scene.first;
 
-	if( tname ) {		/* (name) - Search scene by name */
+	if( name ) {		/* (name) - Search scene by name */
 
 		PyObject *wanted_scene = NULL;
 
-		while( ( scene_iter ) && ( wanted_scene == NULL ) ) {
-
-			if( strcmp( name, scene_iter->id.name + 2 ) == 0 )
-				wanted_scene =
-					Scene_CreatePyObject( scene_iter );
-
-			scene_iter = scene_iter->id.next;
+		for(;scene_iter; scene_iter = scene_iter->id.next) {
+			if( strcmp( name, scene_iter->id.name + 2 ) == 0 ) {
+				wanted_scene = Scene_CreatePyObject( scene_iter );
+				break;
+			}
 		}
 
 		if( wanted_scene == NULL ) {	/* Requested scene doesn't exist */
@@ -681,19 +676,14 @@
 			return ( EXPP_ReturnPyObjError( PyExc_MemoryError,
 							"couldn't create PyList" ) );
 
-		while( scene_iter ) {
+		for(; scene_iter; scene_iter = scene_iter->id.next, index++) {
 			pyobj = Scene_CreatePyObject( scene_iter );
 
 			if( !pyobj ) {
 				Py_DECREF(sce_pylist);
-				return ( EXPP_ReturnPyObjError
-					 ( PyExc_MemoryError,
-					   "couldn't create PyString" ) );
+				return NULL; /* Scene_CreatePyObject sets an error */
 			}
 			PyList_SET_ITEM( sce_pylist, index, pyobj );
-
-			scene_iter = scene_iter->id.next;
-			index++;
 		}
 
 		return sce_pylist;





More information about the Bf-blender-cvs mailing list