diff options
author | Joshua Leung <aligorith@gmail.com> | 2008-09-20 14:10:50 +0400 |
---|---|---|
committer | Joshua Leung <aligorith@gmail.com> | 2008-09-20 14:10:50 +0400 |
commit | c282178411a07fbca859885bd3e674e186756695 (patch) | |
tree | 27b23a201a416d3be994ed281706ea227fda1636 | |
parent | e7c62e903882947afce9dfea5beb1a2ed320cbe3 (diff) |
Patch #17654: Fix for Scene.Get with input >20 chars
Patch by Darryl Pogue (paradox).
Blender cuts off datablock names at 20 chars, which causes issues if you're trying to access Scenes with a string longer
than 20 chars.
Ex.
s = 'GuildPub-Writers_GLOBAL'
Blender.Scene.New(s) #This creates the scene "GuildPub-Writers_GLOB"
Blender.Scene.Get(s) #This throws an error: the name and the string don't match
This patch cuts down the input of Scene.Get() to the 20 char limits, thus making the the above example return the correct
scene.
-rw-r--r-- | source/blender/python/api2_2x/Scene.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/source/blender/python/api2_2x/Scene.c b/source/blender/python/api2_2x/Scene.c index eba951b8813..edb5e015eea 100644 --- a/source/blender/python/api2_2x/Scene.c +++ b/source/blender/python/api2_2x/Scene.c @@ -635,16 +635,19 @@ static PyObject *M_Scene_New( PyObject * self, PyObject * args, /*-----------------------Scene.Get()------------------------------------*/ static PyObject *M_Scene_Get( PyObject * self, PyObject * args ) { - char *name = NULL; + char *tname = NULL, name[22]; Scene *scene_iter; - if( !PyArg_ParseTuple( args, "|s", &name ) ) + if( !PyArg_ParseTuple( args, "|s", &tname ) ) 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( name ) { /* (name) - Search scene by name */ + if( tname ) { /* (name) - Search scene by name */ PyObject *wanted_scene = NULL; |