diff options
author | Campbell Barton <ideasman42@gmail.com> | 2008-09-20 15:54:27 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2008-09-20 15:54:27 +0400 |
commit | 3dbdd8939b418d39f42b6cc0b4fab38083b393cd (patch) | |
tree | e644bf00299b7440ac4273d11be3162f142b2d3d | |
parent | f510057fefea61a15fbbbd6556bf00a6350bb519 (diff) |
16624 was incorrect. Blender wont always give the requested name for new datablocks or for renaming. scripts need to account for this.
-rw-r--r-- | source/blender/python/api2_2x/Scene.c | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/source/blender/python/api2_2x/Scene.c b/source/blender/python/api2_2x/Scene.c index edb5e015eea..662656663c1 100644 --- a/source/blender/python/api2_2x/Scene.c +++ b/source/blender/python/api2_2x/Scene.c @@ -635,29 +635,24 @@ static PyObject *M_Scene_New( PyObject * self, PyObject * args, /*-----------------------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 @@ static PyObject *M_Scene_Get( PyObject * self, PyObject * args ) 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; |