Yuck, a very ancient crasher in going area-full screen in Blender.

I wonder how this survived so long in Blender... (2005/03/09 commit).

Reason was the call to BPY_free_screen_spacehandlers(sc) in kernel,
which was freeing up scripthandlers in a weird way. That call is
really obsolete. The real freeing should go in the del_area() call,
to prevent copying and deleting area in the UI to go wrong.

(Crash happened in testing timeline markers, and holding CTRL+Uparrow
a while...)
This commit is contained in:
2006-11-17 12:44:15 +00:00
parent 414b918010
commit 6b9bf57066
5 changed files with 10 additions and 17 deletions

View File

@@ -116,8 +116,6 @@ PyObject *blender_import( PyObject * self, PyObject * args );
void BPY_Err_Handle( char *script_name );
PyObject *traceback_getFilename( PyObject * tb );
void BPY_free_screen_spacehandlers(struct bScreen *sc);
/****************************************************************************
* Description: This function will start the interpreter and load all modules
* as well as search for a python installation.
@@ -1648,23 +1646,19 @@ int BPY_do_spacehandlers( ScrArea *sa, unsigned short event,
void BPY_free_scriptlink( struct ScriptLink *slink )
{
if( slink->totscript ) {
if( slink->flag )
if( slink->flag ) {
MEM_freeN( slink->flag );
if( slink->scripts )
slink->flag= NULL;
}
if( slink->scripts ) {
MEM_freeN( slink->scripts );
slink->scripts= NULL;
}
}
return;
}
void BPY_free_screen_spacehandlers(struct bScreen *sc)
{
ScrArea *sa;
for (sa = sc->areabase.first; sa; sa = sa->next)
BPY_free_scriptlink(&sa->scriptlink);
}
static int CheckAllSpaceHandlers(Text *text)
{
bScreen *screen;