Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Swaney <sswaney@centurytel.net>2007-01-31 06:12:26 +0300
committerStephen Swaney <sswaney@centurytel.net>2007-01-31 06:12:26 +0300
commitf5a48dfd31d8722f7a68199dd59d3a7e45f6d3ea (patch)
treead9200f7ca3f96b4ef8f444d108ac60ab2b7e9de /source/blender/python/api2_2x/Armature.c
parent9cf602b9494857d98aec2c045492377005cdcf6b (diff)
Bugfix for #5000
Setup for Armature weak ref list was missing from some places where we execute py code. This confused the interpreter and gave random attribute/tuple parse errors. Changed name of weak ref list to "__arm_weakrefs" to avoid name collision with user variables.
Diffstat (limited to 'source/blender/python/api2_2x/Armature.c')
-rw-r--r--source/blender/python/api2_2x/Armature.c38
1 files changed, 20 insertions, 18 deletions
diff --git a/source/blender/python/api2_2x/Armature.c b/source/blender/python/api2_2x/Armature.c
index 658a06d4207..d255183e71b 100644
--- a/source/blender/python/api2_2x/Armature.c
+++ b/source/blender/python/api2_2x/Armature.c
@@ -1348,36 +1348,38 @@ PyObject *Armature_RebuildBones(PyObject *pyarmature)
PyObject *PyArmature_FromArmature(struct bArmature *armature)
{
BPy_Armature *py_armature = NULL;
- PyObject *maindict = NULL, *armdict = NULL, *weakref = NULL;
+ PyObject *maindict = NULL, *weakref = NULL;
+ PyObject *armlist = NULL; /* list of armature weak refs */
+ char *list_name = ARM_WEAKREF_LIST_NAME;
//create armature type
- py_armature = (BPy_Armature*)PyObject_New(BPy_Armature, &Armature_Type); //Armature_Type.tp_alloc(&Armature_Type, 0); //*new*
- py_armature->weaklist = NULL; //init the weaklist
- if (!py_armature)
+ py_armature = (BPy_Armature*)Armature_Type.tp_alloc(&Armature_Type, 0); /*new*/
+ if (!py_armature){
+ printf("Oops - can't create py armature\n");
goto RuntimeError;
+ }
+
+ py_armature->weaklist = NULL; //init the weaklist
py_armature->armature = armature;
//create armature.bones
py_armature->Bones = (BPy_BonesDict*)PyBonesDict_FromPyArmature(py_armature);
- if (!py_armature->Bones)
+ if (!py_armature->Bones){
+ printf("Oops - creating armature.bones\n");
goto RuntimeError;
+ }
//put a weakreference in __main__
maindict= PyModule_GetDict(PyImport_AddModule( "__main__"));
-
- armdict = PyDict_GetItemString(maindict, "armatures");
- /*armature list doesn't exist for pydrivers. . .so check.
- by the way, why is the var called armatures? what if a script author has
- a similar var in his script? won't they conflict?.
-
- joeedh*/
- if (!armdict) return (PyObject *) py_armature;
-
- weakref = PyWeakref_NewProxy((PyObject*)py_armature, Py_None);
- if (PyList_Append(armdict, weakref) == -1){
- goto RuntimeError;
- }
+ armlist = PyDict_GetItemString(maindict, list_name);
+ if( armlist){
+ weakref = PyWeakref_NewProxy((PyObject*)py_armature, Py_None);
+ if (PyList_Append(armlist, weakref) == -1){
+ printf("Oops - list-append failed\n");
+ goto RuntimeError;
+ }
+ }
return (PyObject *) py_armature;
RuntimeError: