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

Reply via email to