* Fixes segfault caused in the Object.getParent function.

Found by Jonathan Thambidurai
* Fixes a scriptlink problem when a script is run using ALT-p.
  Found by Yann Vernier (LoneTech)
* Prints unhandled exceptions. Should fix some memory leaks too.
  Fixed by Yann Verniet (LoneTech)
This commit is contained in:
2003-06-22 18:34:36 +00:00
parent 85f5804333
commit d253eb4b75
4 changed files with 32 additions and 2 deletions

View File

@@ -54,6 +54,17 @@ void initBlenderApi2_2x (void)
M_Blender_Init ();
}
void clearScriptLinks (void)
{
Py_INCREF (Py_False);
PyDict_SetItemString (g_blenderdict, "bylink", Py_False);
/* Old API meant link could be unset. Or even valid when bylink is false.
* This way, you can import it and check its value afterwards, ignoring
* bylink. */
Py_INCREF (Py_None);
PyDict_SetItemString (g_blenderdict, "link", Py_None);
}
ScriptLink * setScriptLinks(ID *id, short event)
{
ScriptLink * scriptlink;

View File

@@ -32,4 +32,5 @@
#include <DNA_ID.h>
void initBlenderApi2_2x (void);
void clearScriptLinks (void);
ScriptLink * setScriptLinks(ID *id, short event);

View File

@@ -400,6 +400,7 @@ PyObject *M_Object_Get(PyObject *self, PyObject *args)
}
blen_object = (C_Object*)PyObject_NEW (C_Object, &Object_Type);
blen_object->object = object;
blen_object->parent = NULL;
blen_object->data = NULL;
return ((PyObject*)blen_object);
@@ -708,7 +709,10 @@ static PyObject *Object_getParent (C_Object *self)
return ((PyObject*)self->parent);
}
/* TODO: what if self->object->parent==NULL? Should we return Py_None? */
if (self->object->parent == NULL)
{
return (EXPP_incr_ret (Py_None));
}
attr = M_ObjectCreatePyObject (self->object->parent);
if (attr)