Revision: 36970
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36970
Author:   dfelinto
Date:     2011-05-28 08:16:34 +0000 (Sat, 28 May 2011)
Log Message:
-----------
bugfix for: [#26753] PhysicsConstraints ID trouble on 64bit (linux at least).
[the problem also affected OSX]

PhysicsId are Long, not ints (see PyObject* KX_GameObject::PyGetPhysicsId() )

There is a reference in the code to use PyCapsule instead of int. I'm not sure
about that. This patch at least stops the crashes
(update: I talked with Campbell and he repeated that PyCapsule are better, but 
if long is working it's fine for now).

Modified Paths:
--------------
    trunk/blender/source/gameengine/Ketsji/KX_PyConstraintBinding.cpp

Modified: trunk/blender/source/gameengine/Ketsji/KX_PyConstraintBinding.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_PyConstraintBinding.cpp   
2011-05-28 07:47:58 UTC (rev 36969)
+++ trunk/blender/source/gameengine/Ketsji/KX_PyConstraintBinding.cpp   
2011-05-28 08:16:34 UTC (rev 36970)
@@ -405,8 +405,13 @@
                                                                                
 PyObject* args, 
                                                                                
 PyObject* kwds)
 {
-       /* FIXME - physicsid is an int being cast to a pointer, should at least 
use PyCapsule */
-       int physicsid=0,physicsid2 = 0,constrainttype=0,extrainfo=0;
+       /* FIXME - physicsid is a long being cast to a pointer, should at least 
use PyCapsule */
+#if defined(_WIN64)
+       __int64 physicsid=0,physicsid2 = 0;
+#else
+       long physicsid=0,physicsid2 = 0;
+#endif
+       int constrainttype=0, extrainfo=0;
        int len = PyTuple_Size(args);
        int success = 1;
        int flag = 0;
@@ -414,27 +419,51 @@
        float pivotX=1,pivotY=1,pivotZ=1,axisX=0,axisY=0,axisZ=1;
        if (len == 3)
        {
-               success = 
PyArg_ParseTuple(args,"iii",&physicsid,&physicsid2,&constrainttype);
+#if defined(_WIN64)
+               success = 
PyArg_ParseTuple(args,"LLi",&physicsid,&physicsid2,&constrainttype);
+#else
+               success = 
PyArg_ParseTuple(args,"lli",&physicsid,&physicsid2,&constrainttype);
+#endif
        }
        else
        if (len ==6)
        {
-               success = 
PyArg_ParseTuple(args,"iiifff",&physicsid,&physicsid2,&constrainttype,
+#if defined(_WIN64)
+               success = 
PyArg_ParseTuple(args,"LLifff",&physicsid,&physicsid2,&constrainttype,
                        &pivotX,&pivotY,&pivotZ);
+#else
+               success = 
PyArg_ParseTuple(args,"llifff",&physicsid,&physicsid2,&constrainttype,
+                                                                  
&pivotX,&pivotY,&pivotZ);            
+#endif 
        }
        else if (len == 9)
        {
-               success = 
PyArg_ParseTuple(args,"iiiffffff",&physicsid,&physicsid2,&constrainttype,
+#if defined(_WIN64)
+               success = 
PyArg_ParseTuple(args,"LLiffffff",&physicsid,&physicsid2,&constrainttype,
                        &pivotX,&pivotY,&pivotZ,&axisX,&axisY,&axisZ);
+#else
+               success = 
PyArg_ParseTuple(args,"lliffffff",&physicsid,&physicsid2,&constrainttype,
+                                                                  
&pivotX,&pivotY,&pivotZ,&axisX,&axisY,&axisZ);
+#endif
+       
        }
        else if (len == 10)
        {
-               success = 
PyArg_ParseTuple(args,"iiiffffffi",&physicsid,&physicsid2,&constrainttype,
+#if defined(_WIN64)
+               success = 
PyArg_ParseTuple(args,"LLiffffffi",&physicsid,&physicsid2,&constrainttype,
                        &pivotX,&pivotY,&pivotZ,&axisX,&axisY,&axisZ,&flag);
+#else
+               success = 
PyArg_ParseTuple(args,"lliffffffi",&physicsid,&physicsid2,&constrainttype,
+                                                                  
&pivotX,&pivotY,&pivotZ,&axisX,&axisY,&axisZ,&flag);
+#endif
        }
        else if (len==4)
        {
-               success = 
PyArg_ParseTuple(args,"iiii",&physicsid,&physicsid2,&constrainttype,&extrainfo);
+#if defined(_WIN64)
+               success = 
PyArg_ParseTuple(args,"LLii",&physicsid,&physicsid2,&constrainttype,&extrainfo);
+#else
+               success = 
PyArg_ParseTuple(args,"llii",&physicsid,&physicsid2,&constrainttype,&extrainfo);
+#endif
                pivotX=extrainfo;
        }
        

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to