From 37bc2f806462b3c2a84891b3aad6db00e935da86 Mon Sep 17 00:00:00 2001 From: Michael Lutz Date: Sun, 17 May 2020 23:32:08 +0200 Subject: Codechange: Use std::string in the driver and blitter selection code. --- src/openttd.cpp | 60 ++++++++++++++++++--------------------------------------- 1 file changed, 19 insertions(+), 41 deletions(-) (limited to 'src/openttd.cpp') diff --git a/src/openttd.cpp b/src/openttd.cpp index e5a6d1b05..980eb2f13 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -533,10 +533,10 @@ static const OptionData _options[] = { */ int openttd_main(int argc, char *argv[]) { - char *musicdriver = nullptr; - char *sounddriver = nullptr; - char *videodriver = nullptr; - char *blitter = nullptr; + std::string musicdriver; + std::string sounddriver; + std::string videodriver; + std::string blitter; std::string graphics_set; std::string sounds_set; std::string music_set; @@ -566,19 +566,15 @@ int openttd_main(int argc, char *argv[]) case 'I': graphics_set = mgo.opt; break; case 'S': sounds_set = mgo.opt; break; case 'M': music_set = mgo.opt; break; - case 'm': free(musicdriver); musicdriver = stredup(mgo.opt); break; - case 's': free(sounddriver); sounddriver = stredup(mgo.opt); break; - case 'v': free(videodriver); videodriver = stredup(mgo.opt); break; - case 'b': free(blitter); blitter = stredup(mgo.opt); break; + case 'm': musicdriver = mgo.opt; break; + case 's': sounddriver = mgo.opt; break; + case 'v': videodriver = mgo.opt; break; + case 'b': blitter = mgo.opt; break; case 'D': - free(musicdriver); - free(sounddriver); - free(videodriver); - free(blitter); - musicdriver = stredup("null"); - sounddriver = stredup("null"); - videodriver = stredup("dedicated"); - blitter = stredup("null"); + musicdriver = "null"; + sounddriver = "null"; + videodriver = "dedicated"; + blitter = "null"; dedicated = true; SetDebugString("net=6"); if (mgo.opt != nullptr) { @@ -746,8 +742,8 @@ int openttd_main(int argc, char *argv[]) GfxInitPalettes(); DEBUG(misc, 1, "Loading blitter..."); - if (blitter == nullptr && _ini_blitter != nullptr) blitter = stredup(_ini_blitter); - _blitter_autodetected = StrEmpty(blitter); + if (blitter.empty() && !_ini_blitter.empty()) blitter = _ini_blitter; + _blitter_autodetected = blitter.empty(); /* Activate the initial blitter. * This is only some initial guess, after NewGRFs have been loaded SwitchNewGRFBlitter may switch to a different one. * - Never guess anything, if the user specified a blitter. (_blitter_autodetected) @@ -758,16 +754,14 @@ int openttd_main(int argc, char *argv[]) (_support8bpp != S8BPP_NONE && (BaseGraphics::GetUsedSet() == nullptr || BaseGraphics::GetUsedSet()->blitter == BLT_8BPP)) || BlitterFactory::SelectBlitter("32bpp-anim") == nullptr) { if (BlitterFactory::SelectBlitter(blitter) == nullptr) { - StrEmpty(blitter) ? + blitter.empty() ? usererror("Failed to autoprobe blitter") : - usererror("Failed to select requested blitter '%s'; does it exist?", blitter); + usererror("Failed to select requested blitter '%s'; does it exist?", blitter.c_str()); } } - free(blitter); - if (videodriver == nullptr && _ini_videodriver != nullptr) videodriver = stredup(_ini_videodriver); + if (videodriver.empty() && !_ini_videodriver.empty()) videodriver = _ini_videodriver; DriverFactoryBase::SelectDriver(videodriver, Driver::DT_VIDEO); - free(videodriver); InitializeSpriteSorter(); @@ -824,13 +818,11 @@ int openttd_main(int argc, char *argv[]) } } - if (sounddriver == nullptr && _ini_sounddriver != nullptr) sounddriver = stredup(_ini_sounddriver); + if (sounddriver.empty() && !_ini_sounddriver.empty()) sounddriver = _ini_sounddriver; DriverFactoryBase::SelectDriver(sounddriver, Driver::DT_SOUND); - free(sounddriver); - if (musicdriver == nullptr && _ini_musicdriver != nullptr) musicdriver = stredup(_ini_musicdriver); + if (musicdriver.empty() && !_ini_musicdriver.empty()) musicdriver = _ini_musicdriver; DriverFactoryBase::SelectDriver(musicdriver, Driver::DT_MUSIC); - free(musicdriver); /* Take our initial lock on whatever we might want to do! */ try { @@ -868,23 +860,9 @@ int openttd_main(int argc, char *argv[]) /* Reset windowing system, stop drivers, free used memory, ... */ ShutdownGame(); - goto exit_normal; exit_noshutdown: - /* These three are normally freed before bootstrap. */ - free(videodriver); - free(blitter); - exit_bootstrap: - /* These are normally freed before exit, but after bootstrap. */ - free(musicdriver); - free(sounddriver); - -exit_normal: - free(_ini_musicdriver); - free(_ini_sounddriver); - free(_ini_videodriver); - free(_ini_blitter); delete scanner; -- cgit v1.2.3-54-g00ecf