aboutsummaryrefslogtreecommitdiff
path: root/engines/pegasus/ai
diff options
context:
space:
mode:
authorJohannes Schickel2012-09-21 02:18:54 +0200
committerJohannes Schickel2012-09-21 02:35:50 +0200
commit8aceef971106ba35ab234b165dbe6e19c842f336 (patch)
treedc1286a31068872960cd3d5925acba78a2b912a7 /engines/pegasus/ai
parentb0079f4fa67099cec2c58e7907bf3fe09d0755cf (diff)
downloadscummvm-rg350-8aceef971106ba35ab234b165dbe6e19c842f336.tar.gz
scummvm-rg350-8aceef971106ba35ab234b165dbe6e19c842f336.tar.bz2
scummvm-rg350-8aceef971106ba35ab234b165dbe6e19c842f336.zip
PEGASUS: Replace FunctionPtr by our Functor code in Common.
This "fixes" a segmentation fault in our buildbot's toolchain for DC. The segmentation fault occured while compiling engines/pegasus/ai/ai_condition.cpp. Thanks to clone2727 for looking over this and testing it.
Diffstat (limited to 'engines/pegasus/ai')
-rw-r--r--engines/pegasus/ai/ai_condition.cpp10
-rw-r--r--engines/pegasus/ai/ai_condition.h2
2 files changed, 6 insertions, 6 deletions
diff --git a/engines/pegasus/ai/ai_condition.cpp b/engines/pegasus/ai/ai_condition.cpp
index df6d3227e5..09ecbfe349 100644
--- a/engines/pegasus/ai/ai_condition.cpp
+++ b/engines/pegasus/ai/ai_condition.cpp
@@ -102,7 +102,7 @@ bool AIOrCondition::fireCondition() {
AITimerCondition::AITimerCondition(const TimeValue time, const TimeScale scale, const bool shouldStartTimer) {
_timerFuse.primeFuse(time, scale);
- _timerFuse.setFunctionPtr((tFunctionPtr)&AITimerFunction, (void *)this);
+ _timerFuse.setFunctor(new Common::Functor0Mem<void, AITimerCondition>(this, &AITimerCondition::fire));
_fired = false;
if (shouldStartTimer)
@@ -138,14 +138,14 @@ void AITimerCondition::readAICondition(Common::ReadStream *stream) {
_timerFuse.lightFuse();
}
-void AITimerCondition::AITimerFunction(FunctionPtr *, AITimerCondition *condition) {
- condition->_fired = true;
-}
-
bool AITimerCondition::fireCondition() {
return _fired;
}
+void AITimerCondition::fire() {
+ _fired = true;
+}
+
AILocationCondition::AILocationCondition(uint32 maxLocations) {
_numLocations = 0;
_maxLocations = maxLocations;
diff --git a/engines/pegasus/ai/ai_condition.h b/engines/pegasus/ai/ai_condition.h
index 2d93a52eab..f7fa1f33c8 100644
--- a/engines/pegasus/ai/ai_condition.h
+++ b/engines/pegasus/ai/ai_condition.h
@@ -136,7 +136,7 @@ public:
virtual void readAICondition(Common::ReadStream *);
protected:
- static void AITimerFunction(FunctionPtr *, AITimerCondition *);
+ void fire();
FuseFunction _timerFuse;
bool _fired;