Revision: 14212
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14212
Author:   ben2610
Date:     2008-03-22 15:47:42 +0100 (Sat, 22 Mar 2008)

Log Message:
-----------
BGE correction: AddRef() on source object of property actuator to protect 
against crash if the source object is deleted (bad game design anyway)

Modified Paths:
--------------
    trunk/blender/projectfiles_vc7/blender/src/BL_src.vcproj
    trunk/blender/source/gameengine/GameLogic/SCA_PropertyActuator.cpp

Modified: trunk/blender/projectfiles_vc7/blender/src/BL_src.vcproj
===================================================================
--- trunk/blender/projectfiles_vc7/blender/src/BL_src.vcproj    2008-03-22 
13:27:34 UTC (rev 14211)
+++ trunk/blender/projectfiles_vc7/blender/src/BL_src.vcproj    2008-03-22 
14:47:42 UTC (rev 14212)
@@ -548,6 +548,9 @@
                                
RelativePath="..\..\..\source\blender\src\transform_manipulator.c">
                        </File>
                        <File
+                               
RelativePath="..\..\..\source\blender\src\transform_ndofinput.c">
+                       </File>
+                       <File
                                
RelativePath="..\..\..\source\blender\src\transform_numinput.c">
                        </File>
                        <File

Modified: trunk/blender/source/gameengine/GameLogic/SCA_PropertyActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/GameLogic/SCA_PropertyActuator.cpp  
2008-03-22 13:27:34 UTC (rev 14211)
+++ trunk/blender/source/gameengine/GameLogic/SCA_PropertyActuator.cpp  
2008-03-22 14:47:42 UTC (rev 14212)
@@ -52,10 +52,16 @@
        m_exprtxt(expr),
        m_sourceObj(sourceObj)
 {
+       // protect ourselves against someone else deleting the source object
+       // don't protect against ourselves: it would create a dead lock
+       if (m_sourceObj && m_sourceObj != GetParent())
+               m_sourceObj->AddRef();
 }
 
 SCA_PropertyActuator::~SCA_PropertyActuator()
 {
+       if (m_sourceObj && m_sourceObj != GetParent())
+               m_sourceObj->Release();
 }
 
 bool SCA_PropertyActuator::Update()


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to