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