[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15199] trunk/blender/source/blender: bugfix

Campbell Barton ideasman42 at gmail.com
Wed Jun 11 16:31:51 CEST 2008


Revision: 15199
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15199
Author:   campbellbarton
Date:     2008-06-11 16:31:51 +0200 (Wed, 11 Jun 2008)

Log Message:
-----------
bugfix
- duplicated script spaces would keep a pointer to the PyObject button list. (causing python errors with negative reference counts when freeing spaces)
- Exiting blender would crash when a UI was open because the ScriptSpaces button PyList was being free'd after python Py_Finalize was called.

Modified Paths:
--------------
    trunk/blender/source/blender/python/BPY_interface.c
    trunk/blender/source/blender/src/space.c

Modified: trunk/blender/source/blender/python/BPY_interface.c
===================================================================
--- trunk/blender/source/blender/python/BPY_interface.c	2008-06-11 11:36:24 UTC (rev 15198)
+++ trunk/blender/source/blender/python/BPY_interface.c	2008-06-11 14:31:51 UTC (rev 15199)
@@ -1154,14 +1154,18 @@
 				if( sl->spacetype == SPACE_SCRIPT ) {
 					SpaceScript *sc = ( SpaceScript * ) sl;
 
-					if( sc->script == script ) {
+					if( sc->script == script ) {					
 						sc->script = NULL;
 
-						if( sc ==
-						    area->spacedata.first ) {
-							scrarea_queue_redraw
-								( area );
+						if( sc == area->spacedata.first ) {
+							scrarea_queue_redraw( area );
 						}
+						
+						if (sc->but_refs) {
+							BPy_Set_DrawButtonsList(sc->but_refs);
+							BPy_Free_DrawButtonsList();
+							sc->but_refs = NULL;
+						}
 					}
 				}
 			}

Modified: trunk/blender/source/blender/src/space.c
===================================================================
--- trunk/blender/source/blender/src/space.c	2008-06-11 11:36:24 UTC (rev 15198)
+++ trunk/blender/source/blender/src/space.c	2008-06-11 14:31:51 UTC (rev 15199)
@@ -6334,7 +6334,10 @@
 			SpaceNode *snode= (SpaceNode *)sl;
 			snode->nodetree= NULL;
 		}
-
+		else if(sl->spacetype==SPACE_SCRIPT) {
+			SpaceScript *sc = ( SpaceScript * ) sl;
+			sc->but_refs = NULL;
+		}
 		sl= sl->next;
 	}
 	





More information about the Bf-blender-cvs mailing list