Author: suokko
Date: Thu Jun 12 12:34:38 2008
New Revision: 27114

URL: http://svn.gna.org/viewcvs/wesnoth?rev=27114&view=rev
Log:
Fixed valgrind warning about unitialized varaibles in image.cpp
Fixed loadscreen memory leak

Modified:
    trunk/src/game.cpp
    trunk/src/image.cpp
    trunk/src/loadscreen.cpp
    trunk/src/loadscreen.hpp
    trunk/src/play_controller.cpp

Modified: trunk/src/game.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/game.cpp?rev=27114&r1=27113&r2=27114&view=diff
==============================================================================
--- trunk/src/game.cpp (original)
+++ trunk/src/game.cpp Thu Jun 12 12:34:38 2008
@@ -2521,7 +2521,7 @@
 
        loadscreen::global_loadscreen->set_progress(100, _("Loading title 
screen."));
        delete loadscreen::global_loadscreen;
-       loadscreen::global_loadscreen = NULL;
+       loadscreen::global_loadscreen = 0;
 
        LOG_CONFIG << "time elapsed: "<<  (SDL_GetTicks() - start_ticks) << " 
ms\n";
 

Modified: trunk/src/image.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/image.cpp?rev=27114&r1=27113&r2=27114&view=diff
==============================================================================
--- trunk/src/image.cpp (original)
+++ trunk/src/image.cpp Thu Jun 12 12:34:38 2008
@@ -212,32 +212,44 @@
 }
 
 locator::value::value() :
-       type_(NONE)
+       type_(NONE), filename_(), loc_(), modifications_(),
+  center_x_(0), center_y_(0)
+
 {}
 
 locator::value::value(const char *filename) :
-  type_(FILE), filename_(filename)
+  type_(FILE), filename_(filename), loc_(), modifications_(),
+  center_x_(0), center_y_(0)
+
 {
 }
 
 
 locator::value::value(const char *filename, const std::string& modifications) :
-  type_(SUB_FILE), filename_(filename), modifications_(modifications)
+  type_(SUB_FILE), filename_(filename), loc_(), modifications_(modifications), 
+  center_x_(0), center_y_(0)
+
 {
 }
 
 locator::value::value(const std::string& filename) :
-  type_(FILE), filename_(filename)
+  type_(FILE), filename_(filename),  loc_(), modifications_(),
+  center_x_(0), center_y_(0)
+
 {
 }
 
 locator::value::value(const std::string& filename, const std::string& 
modifications) :
-  type_(SUB_FILE), filename_(filename), modifications_(modifications)
+  type_(SUB_FILE), filename_(filename), loc_(), modifications_(modifications), 
+  center_x_(0), center_y_(0)
+
 {
 }
 
 locator::value::value(const std::string& filename, const gamemap::location& 
loc, const std::string& modifications) :
-  type_(SUB_FILE), filename_(filename), loc_(loc), 
modifications_(modifications)
+  type_(SUB_FILE), filename_(filename), loc_(loc), 
modifications_(modifications), 
+  center_x_(0), center_y_(0)
+
 {
 }
 

Modified: trunk/src/loadscreen.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/loadscreen.cpp?rev=27114&r1=27113&r2=27114&view=diff
==============================================================================
--- trunk/src/loadscreen.cpp (original)
+++ trunk/src/loadscreen.cpp Thu Jun 12 12:34:38 2008
@@ -23,16 +23,20 @@
 #include "filesystem.hpp"
 
 #include <iostream>
+#include <cassert>
 
 #include <SDL_image.h>
 
 #define MIN_PERCENTAGE   0
 #define MAX_PERCENTAGE 100
 
+loadscreen::global_loadscreen_manager* 
loadscreen::global_loadscreen_manager::manager = 0;
+
 loadscreen::global_loadscreen_manager::global_loadscreen_manager(CVideo& 
screen)
-  : owns(global_loadscreen == NULL)
+  : owns(global_loadscreen == 0)
 {
        if(owns) {
+               manager = this;
                global_loadscreen = new loadscreen(screen);
                global_loadscreen->clear_screen();
        }
@@ -40,10 +44,18 @@
 
 loadscreen::global_loadscreen_manager::~global_loadscreen_manager()
 {
-       if(owns && global_loadscreen) {
+       reset();
+}
+
+void loadscreen::global_loadscreen_manager::reset()
+{
+       if(owns) {
+               owns = false;
+               manager = 0;
+               assert(global_loadscreen);
                global_loadscreen->clear_screen();
                delete global_loadscreen;
-               global_loadscreen = NULL;
+               global_loadscreen = 0;
        }
 }
 

Modified: trunk/src/loadscreen.hpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/loadscreen.hpp?rev=27114&r1=27113&r2=27114&view=diff
==============================================================================
--- trunk/src/loadscreen.hpp (original)
+++ trunk/src/loadscreen.hpp Thu Jun 12 12:34:38 2008
@@ -27,6 +27,7 @@
 
 #include <iostream>
 #include <string>
+#include <cassert>
 
 class loadscreen {
        public:
@@ -66,7 +67,11 @@
                struct global_loadscreen_manager {
                        explicit global_loadscreen_manager(CVideo& screen);
                        ~global_loadscreen_manager();
-
+                       static global_loadscreen_manager& get()
+                       { assert(manager); return *manager; }
+                       void reset();
+private:
+                       static global_loadscreen_manager* manager;
                        bool owns;
                };
        private:

Modified: trunk/src/play_controller.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/play_controller.cpp?rev=27114&r1=27113&r2=27114&view=diff
==============================================================================
--- trunk/src/play_controller.cpp (original)
+++ trunk/src/play_controller.cpp Thu Jun 12 12:34:38 2008
@@ -68,7 +68,7 @@
 }
 
 void play_controller::init(CVideo& video, bool is_replay){
-       loadscreen::global_loadscreen_manager loadscreen_manager(video);
+       loadscreen::global_loadscreen_manager& loadscreen_manager = 
loadscreen::global_loadscreen_manager::get();
 
        // If the recorder has no event, adds an "game start" event
        // to the recorder, whose only goal is to initialize the RNG
@@ -145,7 +145,7 @@
 
        init_managers();
        loadscreen::global_loadscreen->set_progress(100, _("Starting game"));
-       loadscreen::global_loadscreen = NULL;
+       loadscreen_manager.reset();
 }
 
 void play_controller::init_managers(){


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

Reply via email to