Fixes in bpython:
authorWillian Padovani Germano <wpgermano@gmail.com>
Sun, 7 Nov 2004 15:05:35 +0000 (15:05 +0000)
committerWillian Padovani Germano <wpgermano@gmail.com>
Sun, 7 Nov 2004 15:05:35 +0000 (15:05 +0000)
-- Alexander Szakaly reported and provided a patch for Material.c and NMesh.c to solve crash in material handling when there's no material.
-- Ton reported a crash with advancing a frame after creating a new script link.  I couldn't reproduce the crash, but added a check in BPY_do_pyscript to make sure the passed ID pointer is valid.

Thanks both.

source/blender/python/BPY_interface.c
source/blender/python/api2_2x/Material.c
source/blender/python/api2_2x/NMesh.c

index ee318ddaca720f71784eab16d82b5fac7b3d2216..5f978b2e8d61f64eef3fe9030421f67ab19b0afa 100644 (file)
@@ -997,7 +997,11 @@ int BPY_has_onload_script( void )
 
 void BPY_do_pyscript( ID * id, short event )
 {
-       ScriptLink *scriptlink = ID_getScriptlink( id );
+       ScriptLink *scriptlink;
+
+       if( !id ) return;
+
+       scriptlink = ID_getScriptlink( id );
 
        if( scriptlink && scriptlink->totscript ) {
                PyObject *dict;
index 833bd16a00895a3871235d2431a4717428bcd94c..01e91cbb0b3921f4ed34de9e0657d6cbf2e685bb 100644 (file)
@@ -25,7 +25,8 @@
  *
  * This is a new part of Blender.
  *
- * Contributor(s): Willian P. Germano, Michel Selten, Alex Mole
+ * Contributor(s): Willian P. Germano, Michel Selten, Alex Mole,
+ * Alexander Szakaly
  *
  * ***** END GPL/BL DUAL LICENSE BLOCK *****
 */
@@ -2194,6 +2195,8 @@ Material **EXPP_newMaterialList_fromPyList( PyObject * list )
        len = PySequence_Length( list );
        if( len > 16 )
                len = 16;
+       else if( len <= 0 )
+               return NULL;
 
        matlist = EXPP_newMaterialList( len );
 
index 38d189e007feb083bbcea0a1344ab2ed135d5e57..f08882ebcc1ecf5392565a5259824778cde9f000 100644 (file)
@@ -26,7 +26,7 @@
  * This is a new part of Blender.
  *
  * Contributor(s): Willian P. Germano, Jordi Rovira i Bonet, Joseph Gilbert,
- * Bala Gi
+ * Bala Gi, Alexander Szakaly
  *
  * ***** END GPL/BL DUAL LICENSE BLOCK *****
  */
@@ -2045,6 +2045,7 @@ void EXPP_unlink_mesh( Mesh * me )
                        me->mat[a]->id.us--;
                me->mat[a] = 0;
        }
+
 /*     ... here we want to preserve mesh keys */
 /* if users want to get rid of them, they can use mesh.removeAllKeys() */
 /*
@@ -2053,6 +2054,8 @@ void EXPP_unlink_mesh( Mesh * me )
 */
        if( me->texcomesh )
                me->texcomesh = 0;
+
+       me->totcol = 0;
 }
 
 static int unlink_existingMeshData( Mesh * mesh )