From c6c86b8df0c31456a3456a1b4ae9c8596e87c69a Mon Sep 17 00:00:00 2001 From: Willian Padovani Germano <wpgermano@gmail.com> Date: Sun, 7 Nov 2004 15:05:35 +0000 Subject: [PATCH] Fixes in bpython: -- 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 | 6 +++++- source/blender/python/api2_2x/Material.c | 5 ++++- source/blender/python/api2_2x/NMesh.c | 5 ++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/source/blender/python/BPY_interface.c b/source/blender/python/BPY_interface.c index ee318ddaca7..5f978b2e8d6 100644 --- a/source/blender/python/BPY_interface.c +++ b/source/blender/python/BPY_interface.c @@ -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; diff --git a/source/blender/python/api2_2x/Material.c b/source/blender/python/api2_2x/Material.c index 833bd16a008..01e91cbb0b3 100644 --- a/source/blender/python/api2_2x/Material.c +++ b/source/blender/python/api2_2x/Material.c @@ -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 ); diff --git a/source/blender/python/api2_2x/NMesh.c b/source/blender/python/api2_2x/NMesh.c index 38d189e007f..f08882ebcc1 100644 --- a/source/blender/python/api2_2x/NMesh.c +++ b/source/blender/python/api2_2x/NMesh.c @@ -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 ) -- GitLab