Author: tschmitz
Date: Tue Jul 12 09:44:05 2011
New Revision: 50275

URL: http://svn.gna.org/viewcvs/wesnoth?rev=50275&view=rev
Log:
Fixed crash when planning a suppose_dead.

Modified:
    trunk/src/playsingle_controller.cpp
    trunk/src/whiteboard/manager.cpp
    trunk/src/whiteboard/manager.hpp
    trunk/src/whiteboard/side_actions.cpp
    trunk/src/whiteboard/side_actions.hpp
    trunk/src/whiteboard/suppose_dead.cpp
    trunk/src/whiteboard/suppose_dead.hpp

Modified: trunk/src/playsingle_controller.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/playsingle_controller.cpp?rev=50275&r1=50274&r2=50275&view=diff
==============================================================================
--- trunk/src/playsingle_controller.cpp (original)
+++ trunk/src/playsingle_controller.cpp Tue Jul 12 09:44:05 2011
@@ -245,8 +245,13 @@
 
 void playsingle_controller::whiteboard_suppose_dead()
 {
-       wb::scoped_planned_unit_map spum;
-       whiteboard_manager_->save_suppose_dead(*menu_handler_.current_unit());
+       unit_map::iterator curr_unit;
+       map_location loc;
+       { wb::scoped_planned_unit_map raii;
+               curr_unit = menu_handler_.current_unit();
+               loc = curr_unit->get_location();
+       }
+       whiteboard_manager_->save_suppose_dead(*curr_unit,loc);
 }
 
 void playsingle_controller::report_victory(

Modified: trunk/src/whiteboard/manager.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/manager.cpp?rev=50275&r1=50274&r2=50275&view=diff
==============================================================================
--- trunk/src/whiteboard/manager.cpp (original)
+++ trunk/src/whiteboard/manager.cpp Tue Jul 12 09:44:05 2011
@@ -612,11 +612,11 @@
        return created_planned_recall;
 }
 
-void manager::save_suppose_dead(unit& curr_unit)
+void manager::save_suppose_dead(unit& curr_unit, map_location const& loc)
 {
        if(active_ && !executing_actions_ && 
!resources::controller->is_linger_mode())
        {
-               viewer_actions()->queue_suppose_dead(curr_unit);
+               viewer_actions()->queue_suppose_dead(curr_unit,loc);
                on_save_action();
        }
 }

Modified: trunk/src/whiteboard/manager.hpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/manager.hpp?rev=50275&r1=50274&r2=50275&view=diff
==============================================================================
--- trunk/src/whiteboard/manager.hpp (original)
+++ trunk/src/whiteboard/manager.hpp Tue Jul 12 09:44:05 2011
@@ -129,7 +129,7 @@
        bool save_recall(const unit& unit, int side_num, const map_location& 
recall_hex);
 
        /// Creates a suppose-dead action for the current side
-       void save_suppose_dead(unit& curr_unit);
+       void save_suppose_dead(unit& curr_unit, map_location const& loc);
 
        /** Executes first action in the queue for current side */
        void contextual_execute();

Modified: trunk/src/whiteboard/side_actions.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/side_actions.cpp?rev=50275&r1=50274&r2=50275&view=diff
==============================================================================
--- trunk/src/whiteboard/side_actions.cpp (original)
+++ trunk/src/whiteboard/side_actions.cpp Tue Jul 12 09:44:05 2011
@@ -254,10 +254,10 @@
        return queue_action(new_recall);
 }
 
-side_actions::iterator side_actions::queue_suppose_dead(unit& curr_unit)
+side_actions::iterator side_actions::queue_suppose_dead(unit& curr_unit, 
map_location const& loc)
 {
        suppose_dead_ptr new_suppose_dead;
-       new_suppose_dead.reset(new suppose_dead(team_index(),curr_unit));
+       new_suppose_dead.reset(new suppose_dead(team_index(),curr_unit,loc));
        return queue_action(new_suppose_dead);
 }
 

Modified: trunk/src/whiteboard/side_actions.hpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/side_actions.hpp?rev=50275&r1=50274&r2=50275&view=diff
==============================================================================
--- trunk/src/whiteboard/side_actions.hpp (original)
+++ trunk/src/whiteboard/side_actions.hpp Tue Jul 12 09:44:05 2011
@@ -141,7 +141,7 @@
         * Queues a suppose_dead to be executed last
         * @return The queued suppose_dead's position (an iterator to it)
         */
-       iterator queue_suppose_dead(unit& curr_unit);
+       iterator queue_suppose_dead(unit& curr_unit, map_location const& loc);
 
        /**
         * Inserts an action at the specified position. The begin() and end() 
functions might prove useful here.

Modified: trunk/src/whiteboard/suppose_dead.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/suppose_dead.cpp?rev=50275&r1=50274&r2=50275&view=diff
==============================================================================
--- trunk/src/whiteboard/suppose_dead.cpp (original)
+++ trunk/src/whiteboard/suppose_dead.cpp Tue Jul 12 09:44:05 2011
@@ -60,11 +60,11 @@
                return s;
        }
 
-       suppose_dead::suppose_dead(size_t team_index, unit& curr_unit)
+       suppose_dead::suppose_dead(size_t team_index, unit& curr_unit, 
map_location const& loc)
        : action(team_index)
        , unit_(&curr_unit)
        , unit_id_(curr_unit.id())
-       , loc_(curr_unit.get_location())
+       , loc_(loc)
        , valid_(true)
        {
                this->init();

Modified: trunk/src/whiteboard/suppose_dead.hpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/suppose_dead.hpp?rev=50275&r1=50274&r2=50275&view=diff
==============================================================================
--- trunk/src/whiteboard/suppose_dead.hpp (original)
+++ trunk/src/whiteboard/suppose_dead.hpp Tue Jul 12 09:44:05 2011
@@ -37,8 +37,7 @@
                friend class highlight_visitor;
 
        public:
-               ///Future unit map must be valid during construction, so that 
suppose_dead can find its unit
-               suppose_dead(size_t team_index, unit& curr_unit);
+               suppose_dead(size_t team_index, unit& curr_unit, map_location 
const& loc);
                explicit suppose_dead(config const&); // For deserialization
                virtual ~suppose_dead();
 


_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits

Reply via email to