fix for crash when a python operator or render engine was freed in the C code and then referenced from python.

now further access in python gives an exception at the line when the freed data is accessed.
This commit is contained in:
2012-10-26 10:33:57 +00:00
parent 6cc79fc3d0
commit 0e6f8e3e25
6 changed files with 17 additions and 5 deletions

View File

@@ -510,6 +510,18 @@ void BPY_DECREF(void *pyob_ptr)
PyGILState_Release(gilstate);
}
void BPY_RNA_DECREF_INVALIDATE(void *pyob_ptr)
{
PyGILState_STATE gilstate = PyGILState_Ensure();
const int do_invalidate = (Py_REFCNT((PyObject *)pyob_ptr) > 1);
Py_DECREF((PyObject *)pyob_ptr);
if (do_invalidate) {
pyrna_invalidate(pyob_ptr);
}
PyGILState_Release(gilstate);
}
/* return -1 on error, else 0 */
int BPY_button_exec(bContext *C, const char *expr, double *value, const short verbose)
{