fix for crash with demo mode addon, modal operator loading a blend file would free all window data which was then accessed, causing a crash.

This commit is contained in:
2011-09-28 15:42:55 +00:00
parent 35f881b44d
commit b88776ba5a
2 changed files with 48 additions and 34 deletions

View File

@@ -6238,7 +6238,11 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
ParameterIterator iter;
PointerRNA funcptr;
int err= 0, i, flag, ret_len=0;
int is_static= RNA_function_flag(func) & FUNC_NO_SELF;
const char is_static= (RNA_function_flag(func) & FUNC_NO_SELF) != 0;
/* annoying!, need to check if the screen gets set to NULL which is a
* hint that the file was actually re-loaded. */
const char is_valid_screen= (CTX_wm_screen(C) != NULL);
PropertyRNA *pret_single= NULL;
void *retdata_single= NULL;
@@ -6498,7 +6502,11 @@ static int bpy_class_call(bContext *C, PointerRNA *ptr, FunctionRNA *func, Param
if(err != 0) {
ReportList *reports;
/* alert the user, else they wont know unless they see the console. */
if (!is_static && ptr->data && RNA_struct_is_a(ptr->type, &RNA_Operator)) {
if ( (!is_static) &&
(ptr->data) &&
(RNA_struct_is_a(ptr->type, &RNA_Operator)) &&
is_valid_screen == (CTX_wm_screen(C) != NULL))
{
wmOperator *op= ptr->data;
reports= op->reports;
}