Author: suokko
Date: Wed Sep 3 11:55:33 2008
New Revision: 29238
URL: http://svn.gna.org/viewcvs/wesnoth?rev=29238&view=rev
Log:
Fixed crsah if playsingle_controller constructor throws
Modified:
trunk/src/play_controller.cpp
trunk/src/play_controller.hpp
trunk/src/playmp_controller.hpp
trunk/src/playsingle_controller.cpp
trunk/src/replay_controller.cpp
trunk/src/replay_controller.hpp
Modified: trunk/src/play_controller.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/play_controller.cpp?rev=29238&r1=29237&r2=29238&view=diff
==============================================================================
--- trunk/src/play_controller.cpp (original)
+++ trunk/src/play_controller.cpp Wed Sep 3 11:55:33 2008
@@ -41,16 +41,16 @@
controller_base(ticks, game_config, video),
verify_manager_(units_),
team_manager_(teams_),
- prefs_disp_manager_(NULL),
- tooltips_manager_(NULL),
- events_manager_(NULL),
- halo_manager_(NULL),
+ prefs_disp_manager_(),
+ tooltips_manager_(),
+ events_manager_(),
+ halo_manager_(),
labels_manager_(),
help_manager_(&game_config, &map_),
- mouse_handler_(gui_, teams_, units_, map_, status_, undo_stack_,
redo_stack_),
- menu_handler_(gui_, units_, teams_, level, map_, game_config, status_,
state_of_game, undo_stack_, redo_stack_),
- soundsources_manager_(NULL),
- gui_(NULL),
+ mouse_handler_(NULL, teams_, units_, map_, status_, undo_stack_,
redo_stack_),
+ menu_handler_(NULL, units_, teams_, level, map_, game_config, status_,
state_of_game, undo_stack_, redo_stack_),
+ soundsources_manager_(),
+ gui_(),
generator_setter(&recorder),
statistics_context_(level["name"]),
level_(level),
@@ -89,12 +89,6 @@
}
play_controller::~play_controller(){
- delete halo_manager_;
- delete prefs_disp_manager_;
- delete tooltips_manager_;
- delete events_manager_;
- delete soundsources_manager_;
- delete gui_;
}
void play_controller::init(CVideo& video, bool is_replay){
@@ -133,8 +127,8 @@
// This *needs* to be created before the show_intro and show_map_scene
// as that functions use the manager state_of_game
// Has to be done before registering any events!
- events_manager_ = new game_events::manager(level_,map_,
- units_,teams_,
gamestate_,status_);
+ events_manager_.reset(new game_events::manager(level_,map_,
+ units_,teams_,
gamestate_,status_));
std::set<std::string> seen_save_ids;
@@ -160,12 +154,12 @@
const config* theme_cfg = get_theme(game_config_, level_["theme"]);
if (theme_cfg)
- gui_ = new
game_display(units_,video,map_,status_,teams_,*theme_cfg, game_config_, level_);
+ gui_.reset(new
game_display(units_,video,map_,status_,teams_,*theme_cfg, game_config_,
level_));
else
- gui_ = new
game_display(units_,video,map_,status_,teams_,config(), game_config_, level_);
+ gui_.reset(new
game_display(units_,video,map_,status_,teams_,config(), game_config_, level_));
loadscreen::global_loadscreen->set_progress(90, _("Initializing
display"));
- mouse_handler_.set_gui(gui_);
- menu_handler_.set_gui(gui_);
+ mouse_handler_.set_gui(gui_.get());
+ menu_handler_.set_gui(gui_.get());
events_manager_->set_gui(*gui_);
theme::set_known_themes(&game_config_);
@@ -204,13 +198,13 @@
void play_controller::init_managers(){
LOG_NG << "initializing managers... " << (SDL_GetTicks() - ticks_) <<
"\n";
- prefs_disp_manager_ = new preferences::display_manager(gui_);
- tooltips_manager_ = new tooltips::manager(gui_->video());
- soundsources_manager_ = new soundsource::manager(*gui_);
+ prefs_disp_manager_.reset(new preferences::display_manager(gui_.get()));
+ tooltips_manager_.reset(new tooltips::manager(gui_->video()));
+ soundsources_manager_.reset(new soundsource::manager(*gui_));
events_manager_->set_soundsource(*soundsources_manager_);
- halo_manager_ = new halo::manager(*gui_);
+ halo_manager_.reset(new halo::manager(*gui_));
LOG_NG << "done initializing managers... " << (SDL_GetTicks() - ticks_)
<< "\n";
}
@@ -546,7 +540,7 @@
recorder.add_event(wml_commands_[i]->name, menu_hex);
if(game_events::fire(wml_commands_[i]->name, menu_hex))
{
// The event has mutated the gamestate
- apply_shroud_changes(undo_stack_, gui_, map_,
+ apply_shroud_changes(undo_stack_, gui_.get(),
map_,
units_, teams_, (player_number_ - 1));
undo_stack_.clear();
}
Modified: trunk/src/play_controller.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/play_controller.hpp?rev=29238&r1=29237&r2=29238&view=diff
==============================================================================
--- trunk/src/play_controller.hpp (original)
+++ trunk/src/play_controller.hpp Wed Sep 3 11:55:33 2008
@@ -34,6 +34,8 @@
#include <vector>
+#include <boost/scoped_ptr.hpp>
+
class game_display;
class team;
@@ -42,7 +44,7 @@
public:
play_controller(const config& level, game_state& state_of_game,
int ticks, int num_turns, const config& game_config, CVideo&
video, bool skip_replay, bool is_replay);
- ~play_controller();
+ virtual ~play_controller();
//event handler, overriden from observer
//there is nothing to handle in this class actually but that might
change in the future
@@ -118,18 +120,18 @@
//managers
const verification_manager verify_manager_;
teams_manager team_manager_;
- preferences::display_manager* prefs_disp_manager_;
- tooltips::manager* tooltips_manager_;
- game_events::manager* events_manager_;
- halo::manager* halo_manager_;
+ boost::scoped_ptr<preferences::display_manager> prefs_disp_manager_;
+ boost::scoped_ptr<tooltips::manager> tooltips_manager_;
+ boost::scoped_ptr<game_events::manager> events_manager_;
+ boost::scoped_ptr<halo::manager> halo_manager_;
font::floating_label_context labels_manager_;
help::help_manager help_manager_;
events::mouse_handler mouse_handler_;
events::menu_handler menu_handler_;
- soundsource::manager* soundsources_manager_;
+ boost::scoped_ptr<soundsource::manager> soundsources_manager_;
//other objects
- game_display* gui_;
+ boost::scoped_ptr<game_display> gui_;
const rand_rng::set_random_generator generator_setter;
const statistics::scenario_context statistics_context_;
const config& level_;
Modified: trunk/src/playmp_controller.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/playmp_controller.hpp?rev=29238&r1=29237&r2=29238&view=diff
==============================================================================
--- trunk/src/playmp_controller.hpp (original)
+++ trunk/src/playmp_controller.hpp Wed Sep 3 11:55:33 2008
@@ -31,7 +31,7 @@
playmp_controller(const config& level, game_state& state_of_game,
const int ticks, const int num_turns, const config&
game_config, CVideo& video,
bool skip_replay, bool is_host);
- ~playmp_controller();
+ virtual ~playmp_controller();
bool is_host() { return is_host_; }
Modified: trunk/src/playsingle_controller.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/playsingle_controller.cpp?rev=29238&r1=29237&r2=29238&view=diff
==============================================================================
--- trunk/src/playsingle_controller.cpp (original)
+++ trunk/src/playsingle_controller.cpp Wed Sep 3 11:55:33 2008
@@ -1,4 +1,5 @@
/* $Id$ */
+
/*
Copyright (C) 2006 - 2008 by Joerg Hinrichs <[EMAIL PROTECTED]>
wesnoth playlevel Copyright (C) 2003 by David White <[EMAIL PROTECTED]>
@@ -62,7 +63,7 @@
playsingle_controller::~playsingle_controller()
{
- ai_manager::reap_ais() ;
+ ai_manager::reap_ais() ;
}
Modified: trunk/src/replay_controller.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/replay_controller.cpp?rev=29238&r1=29237&r2=29238&view=diff
==============================================================================
--- trunk/src/replay_controller.cpp (original)
+++ trunk/src/replay_controller.cpp Wed Sep 3 11:55:33 2008
@@ -179,11 +179,9 @@
gamestate_ = gamestate_start_;
teams_ = teams_start_;
statistics::fresh_stats();
- if (events_manager_ != NULL){
- delete events_manager_;
- events_manager_ = 0;
- events_manager_ = new game_events::manager(level_,map_,
- units_,teams_,
gamestate_,status_);
+ if (events_manager_ ){
+ events_manager_.reset(new game_events::manager(level_,map_,
+ units_,teams_,
gamestate_,status_));
events_manager_->set_gui(*gui_);
events_manager_->set_soundsource(*soundsources_manager_);
}
Modified: trunk/src/replay_controller.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/replay_controller.hpp?rev=29238&r1=29237&r2=29238&view=diff
==============================================================================
--- trunk/src/replay_controller.hpp (original)
+++ trunk/src/replay_controller.hpp Wed Sep 3 11:55:33 2008
@@ -27,7 +27,7 @@
public:
replay_controller(const config& level, game_state& state_of_game,
const int ticks, const int num_turns, const config&
game_config, CVideo& video);
- ~replay_controller();
+ virtual ~replay_controller();
virtual bool can_execute_command(hotkey::HOTKEY_COMMAND command, int
index=-1) const;
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits