From 4f136cf22b0bc80277881862a65cc90f6dd7c063 Mon Sep 17 00:00:00 2001 From: Christophe Henry Date: Thu, 3 Jun 2010 22:20:18 +0000 Subject: [PATCH] bug fix (wrong source/target using Internal<>) [SVN r62418] --- include/boost/msm/back/state_machine.hpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/include/boost/msm/back/state_machine.hpp b/include/boost/msm/back/state_machine.hpp index f9088b7..fa3081e 100644 --- a/include/boost/msm/back/state_machine.hpp +++ b/include/boost/msm/back/state_machine.hpp @@ -685,7 +685,10 @@ private: // if a guard condition is here, call it to check that the event is accepted static bool check_guard(library_sm& fsm,transition_event const& evt) { - if ( ROW::guard_call(fsm,evt,fsm,fsm,fsm.m_substate_list) ) + if ( ROW::guard_call(fsm,evt, + ::boost::fusion::at_key(fsm.m_substate_list), + ::boost::fusion::at_key(fsm.m_substate_list), + fsm.m_substate_list) ) return true; return false; } @@ -699,7 +702,10 @@ private: } // then call the action method - ROW::action_call(fsm,evt,fsm,fsm,fsm.m_substate_list); + ROW::action_call(fsm,evt, + ::boost::fusion::at_key(fsm.m_substate_list), + ::boost::fusion::at_key(fsm.m_substate_list), + fsm.m_substate_list); return HANDLED_TRUE; } }; @@ -717,7 +723,10 @@ private: static HandledEnum execute(library_sm& fsm, int region_index, int state, transition_event const& evt) { // then call the action method - ROW::action_call(fsm,evt,fsm,fsm,fsm.m_substate_list); + ROW::action_call(fsm,evt, + ::boost::fusion::at_key(fsm.m_substate_list), + ::boost::fusion::at_key(fsm.m_substate_list), + fsm.m_substate_list); return HANDLED_TRUE; } }; @@ -734,7 +743,10 @@ private: // if a guard condition is here, call it to check that the event is accepted static bool check_guard(library_sm& fsm,transition_event const& evt) { - if ( ROW::guard_call(fsm,evt,fsm,fsm,fsm.m_substate_list) ) + if ( ROW::guard_call(fsm,evt, + ::boost::fusion::at_key(fsm.m_substate_list), + ::boost::fusion::at_key(fsm.m_substate_list), + fsm.m_substate_list) ) return true; return false; }