diff options
Diffstat (limited to 'src/main.cpp')
-rw-r--r-- | src/main.cpp | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/src/main.cpp b/src/main.cpp index 0c79affe..82f669d7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -32,7 +32,8 @@ #include <iostream> #include <guichan.hpp> -#include <SDL.h> +#include <SDL/SDL.h> +#include <physfs.h> #include <libxml/xmlversion.h> #ifdef USE_OPENGL @@ -52,9 +53,9 @@ char sex, n_server, n_character; SERVER_INFO *server_info; PLAYER_INFO *char_info = new PLAYER_INFO; -Spriteset *hairset, *playerset; -Image *login_wallpaper; -Graphics *graphics; +Spriteset *hairset = NULL, *playerset = NULL; +Image *login_wallpaper = NULL; +Graphics* graphics; char username[LEN_USERNAME]; char password[LEN_PASSWORD]; @@ -65,13 +66,26 @@ unsigned char state; unsigned short x, y; unsigned char direction; unsigned char screen_mode; -char *dir; +char *dir = NULL; Sound sound; // ini file configuration reader Configuration config; +// macros for safe object deletion +#define SAFE_DELETE(object) { \ + if (object != NULL) { \ + delete object; \ + } \ +} + +#define SAFE_DELETE_ARRAY(array) { \ + if (array != NULL) { \ + delete [] array; \ + } \ +} + /** * Listener used for responding to map start error dialog. @@ -301,9 +315,9 @@ void init_engine() void exit_engine() { config.write(dir); - delete[] dir; - delete gui; - delete graphics; + SAFE_DELETE_ARRAY(dir); + SAFE_DELETE(gui); + SAFE_DELETE(graphics); ResourceManager::deleteInstance(); } @@ -311,6 +325,7 @@ void exit_engine() int main(int argc, char *argv[]) { init_engine(); + PHYSFS_init(argv[0]); SDL_Event event; @@ -357,7 +372,7 @@ int main(int argc, char *argv[]) login_wallpaper->draw(screen, 0, 0); gui->logic(); gui->draw(); - guiGraphics->updateScreen(); + graphics->updateScreen(); break; default: state = EXIT; @@ -366,5 +381,6 @@ int main(int argc, char *argv[]) } log("State: EXIT"); exit_engine(); + PHYSFS_deinit(); return 0; } |