exceptions in registering properties were not properly handled, allowing a single error stop the main module registration loop.
worst case 1 script error could load blender without a UI.
This commit is contained in:
@@ -4908,7 +4908,7 @@ static int pyrna_deferred_register_props(StructRNA *srna, PyObject *class_dict)
|
||||
PyObject *item, *key;
|
||||
PyObject *order;
|
||||
Py_ssize_t pos = 0;
|
||||
int ret;
|
||||
int ret= 0;
|
||||
|
||||
/* in both cases PyDict_CheckExact(class_dict) will be true even
|
||||
* though Operators have a metaclass dict namespace */
|
||||
@@ -4918,7 +4918,7 @@ static int pyrna_deferred_register_props(StructRNA *srna, PyObject *class_dict)
|
||||
key= PyList_GET_ITEM(order, pos);
|
||||
item= PyDict_GetItem(class_dict, key);
|
||||
ret= deferred_register_prop(srna, key, item);
|
||||
if(ret==-1)
|
||||
if(ret != 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -4926,12 +4926,12 @@ static int pyrna_deferred_register_props(StructRNA *srna, PyObject *class_dict)
|
||||
while (PyDict_Next(class_dict, &pos, &key, &item)) {
|
||||
ret= deferred_register_prop(srna, key, item);
|
||||
|
||||
if(ret==-1)
|
||||
if(ret != 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int pyrna_deferred_register_class_recursive(StructRNA *srna, PyTypeObject *py_class)
|
||||
|
||||
Reference in New Issue
Block a user