forked from bartvdbraak/blender
- PyInt_AsLong() was called on a possibly NULL object, this may be
a checked error but is no good anyway - Bone_dealloc free'd Blender's actual copy of the Bone! AGH!!!! - On syntax errors the python global dictionary was being free'd twice. AGH!!! again! Can someone from the Python team please audit this.
This commit is contained in:
parent
baa54a9a9f
commit
f54160ca2f
@ -339,8 +339,12 @@ void BPY_Err_Handle(char *script_name)
|
||||
PyErr_Restore(exception, err, tb); /* takes away reference! */
|
||||
PyErr_Print();
|
||||
v = PyObject_GetAttrString(err, "lineno");
|
||||
g_script_error.lineno = PyInt_AsLong(v);
|
||||
Py_XDECREF(v);
|
||||
if (v) {
|
||||
g_script_error.lineno = PyInt_AsLong(v);
|
||||
Py_DECREF(v);
|
||||
} else {
|
||||
g_script_error.lineno = -1;
|
||||
}
|
||||
/* this avoids an abort in Python 2.3's garbage collecting: */
|
||||
PyErr_Clear();
|
||||
return;
|
||||
@ -445,6 +449,7 @@ int BPY_txt_do_python_Text(struct Text* text)
|
||||
|
||||
BPY_Err_Handle(GetName(text));
|
||||
ReleaseGlobalDictionary(py_dict);
|
||||
script->py_globaldict = NULL;
|
||||
free_libblock(&G.main->script, script);
|
||||
//BPY_end_python();
|
||||
//BPY_start_python();
|
||||
|
@ -1067,7 +1067,6 @@ Bone_setPose (BPy_Bone *self, PyObject *args)
|
||||
static void
|
||||
Bone_dealloc (BPy_Bone * self)
|
||||
{
|
||||
MEM_freeN(self->bone);
|
||||
PyObject_DEL (self);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user