mirror of https://github.com/OpenTTD/OpenTTD
(svn r26089) -Fix: a number of minor memory leaks
parent
2fc10b7e04
commit
0ac9ed0b6b
|
@ -1083,8 +1083,11 @@ void DetermineBasePaths(const char *exe)
|
||||||
{
|
{
|
||||||
char tmp[MAX_PATH];
|
char tmp[MAX_PATH];
|
||||||
#if defined(WITH_XDG_BASEDIR) && defined(WITH_PERSONAL_DIR)
|
#if defined(WITH_XDG_BASEDIR) && defined(WITH_PERSONAL_DIR)
|
||||||
snprintf(tmp, MAX_PATH, "%s" PATHSEP "%s", xdgDataHome(NULL),
|
const char *xdg_data_home = xdgDataHome(NULL);
|
||||||
|
snprintf(tmp, MAX_PATH, "%s" PATHSEP "%s", xdg_data_home,
|
||||||
PERSONAL_DIR[0] == '.' ? &PERSONAL_DIR[1] : PERSONAL_DIR);
|
PERSONAL_DIR[0] == '.' ? &PERSONAL_DIR[1] : PERSONAL_DIR);
|
||||||
|
free(xdg_data_home);
|
||||||
|
|
||||||
AppendPathSeparator(tmp, MAX_PATH);
|
AppendPathSeparator(tmp, MAX_PATH);
|
||||||
_searchpaths[SP_PERSONAL_DIR_XDG] = strdup(tmp);
|
_searchpaths[SP_PERSONAL_DIR_XDG] = strdup(tmp);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1174,8 +1177,12 @@ void DeterminePaths(const char *exe)
|
||||||
|
|
||||||
#if defined(WITH_XDG_BASEDIR) && defined(WITH_PERSONAL_DIR)
|
#if defined(WITH_XDG_BASEDIR) && defined(WITH_PERSONAL_DIR)
|
||||||
char config_home[MAX_PATH];
|
char config_home[MAX_PATH];
|
||||||
snprintf(config_home, MAX_PATH, "%s" PATHSEP "%s", xdgConfigHome(NULL),
|
|
||||||
|
const char *xdg_config_home = xdgConfigHome(NULL);
|
||||||
|
snprintf(config_home, MAX_PATH, "%s" PATHSEP "%s", xdg_config_home,
|
||||||
PERSONAL_DIR[0] == '.' ? &PERSONAL_DIR[1] : PERSONAL_DIR);
|
PERSONAL_DIR[0] == '.' ? &PERSONAL_DIR[1] : PERSONAL_DIR);
|
||||||
|
free(xdg_config_home);
|
||||||
|
|
||||||
AppendPathSeparator(config_home, MAX_PATH);
|
AppendPathSeparator(config_home, MAX_PATH);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -557,6 +557,7 @@ int openttd_main(int argc, char *argv[])
|
||||||
_config_file = NULL;
|
_config_file = NULL;
|
||||||
|
|
||||||
GetOptData mgo(argc - 1, argv + 1, _options);
|
GetOptData mgo(argc - 1, argv + 1, _options);
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
while ((i = mgo.GetOpt()) != -1) {
|
while ((i = mgo.GetOpt()) != -1) {
|
||||||
|
@ -637,8 +638,14 @@ int openttd_main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'q': {
|
case 'q': {
|
||||||
|
delete scanner;
|
||||||
|
|
||||||
DeterminePaths(argv[0]);
|
DeterminePaths(argv[0]);
|
||||||
if (StrEmpty(mgo.opt)) return 1;
|
if (StrEmpty(mgo.opt)) {
|
||||||
|
ret = 1;
|
||||||
|
goto exit_noshutdown;
|
||||||
|
}
|
||||||
|
|
||||||
char title[80];
|
char title[80];
|
||||||
title[0] = '\0';
|
title[0] = '\0';
|
||||||
FiosGetSavegameListCallback(SLD_LOAD_GAME, mgo.opt, strrchr(mgo.opt, '.'), title, lastof(title));
|
FiosGetSavegameListCallback(SLD_LOAD_GAME, mgo.opt, strrchr(mgo.opt, '.'), title, lastof(title));
|
||||||
|
@ -653,12 +660,12 @@ int openttd_main(int argc, char *argv[])
|
||||||
GetString(buf, _load_check_data.error, lastof(buf));
|
GetString(buf, _load_check_data.error, lastof(buf));
|
||||||
fprintf(stderr, "%s\n", buf);
|
fprintf(stderr, "%s\n", buf);
|
||||||
}
|
}
|
||||||
return 1;
|
goto exit_noshutdown;
|
||||||
}
|
}
|
||||||
|
|
||||||
WriteSavegameInfo(title);
|
WriteSavegameInfo(title);
|
||||||
|
|
||||||
return 0;
|
goto exit_noshutdown;
|
||||||
}
|
}
|
||||||
case 'G': scanner->generation_seed = atoi(mgo.opt); break;
|
case 'G': scanner->generation_seed = atoi(mgo.opt); break;
|
||||||
case 'c': _config_file = strdup(mgo.opt); break;
|
case 'c': _config_file = strdup(mgo.opt); break;
|
||||||
|
@ -683,7 +690,8 @@ int openttd_main(int argc, char *argv[])
|
||||||
BaseMusic::FindSets();
|
BaseMusic::FindSets();
|
||||||
ShowHelp();
|
ShowHelp();
|
||||||
delete scanner;
|
delete scanner;
|
||||||
return 0;
|
|
||||||
|
goto exit_noshutdown;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(WINCE) && defined(_DEBUG)
|
#if defined(WINCE) && defined(_DEBUG)
|
||||||
|
@ -870,15 +878,26 @@ exit:
|
||||||
/* Reset windowing system, stop drivers, free used memory, ... */
|
/* Reset windowing system, stop drivers, free used memory, ... */
|
||||||
ShutdownGame();
|
ShutdownGame();
|
||||||
|
|
||||||
|
exit_noshutdown:
|
||||||
free(BaseGraphics::ini_set);
|
free(BaseGraphics::ini_set);
|
||||||
free(BaseSounds::ini_set);
|
free(BaseSounds::ini_set);
|
||||||
free(BaseMusic::ini_set);
|
free(BaseMusic::ini_set);
|
||||||
|
|
||||||
|
free(graphics_set);
|
||||||
|
free(sounds_set);
|
||||||
|
free(music_set);
|
||||||
|
|
||||||
free(_ini_musicdriver);
|
free(_ini_musicdriver);
|
||||||
free(_ini_sounddriver);
|
free(_ini_sounddriver);
|
||||||
free(_ini_videodriver);
|
free(_ini_videodriver);
|
||||||
free(_ini_blitter);
|
free(_ini_blitter);
|
||||||
|
|
||||||
return 0;
|
free(musicdriver);
|
||||||
|
free(sounddriver);
|
||||||
|
free(videodriver);
|
||||||
|
free(blitter);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleExitGameRequest()
|
void HandleExitGameRequest()
|
||||||
|
|
Loading…
Reference in New Issue