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:
authorBenoit Bolsee <benoit.bolsee@online.be>2008-03-22 17:47:42 +0300
committerBenoit Bolsee <benoit.bolsee@online.be>2008-03-22 17:47:42 +0300
commit6615f8b74f5f959ccae5a33aeae90b37b3cd511b (patch)
tree36c6692edf3959ba4226c6e965ec50069fb68a85 /source/gameengine
parent1d0e1d5406a6603d629d7284418996cd19d0202f (diff)
BGE correction: AddRef() on source object of property actuator to protect against crash if the source object is deleted (bad game design anyway)
Diffstat (limited to 'source/gameengine')
-rw-r--r--source/gameengine/GameLogic/SCA_PropertyActuator.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/source/gameengine/GameLogic/SCA_PropertyActuator.cpp b/source/gameengine/GameLogic/SCA_PropertyActuator.cpp
index c798503ae8a..29642cd5a7b 100644
--- a/source/gameengine/GameLogic/SCA_PropertyActuator.cpp
+++ b/source/gameengine/GameLogic/SCA_PropertyActuator.cpp
@@ -52,10 +52,16 @@ SCA_PropertyActuator::SCA_PropertyActuator(SCA_IObject* gameobj,CValue* sourceOb
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()