diff --git a/sc2/src/options.c b/sc2/src/options.c index 96c3f350d..46c7c30c1 100644 --- a/sc2/src/options.c +++ b/sc2/src/options.c @@ -603,6 +603,31 @@ prepareAddons (const char **addons) } } +void +unprepareAllDirs (void) +{ + if (saveDir) + { + uio_closeDir (saveDir); + saveDir = 0; + } + if (meleeDir) + { + uio_closeDir (meleeDir); + meleeDir = 0; + } + if (contentDir) + { + uio_closeDir (contentDir); + contentDir = 0; + } + if (configDir) + { + uio_closeDir (configDir); + configDir = 0; + } +} + bool setGammaCorrection (float gamma) { diff --git a/sc2/src/options.h b/sc2/src/options.h index aa673efe2..67480a4d9 100644 --- a/sc2/src/options.h +++ b/sc2/src/options.h @@ -79,6 +79,7 @@ void prepareMeleeDir (void); void prepareSaveDir (void); void prepareAddons (const char **addons); void prepareShadowAddons (const char **addons); +void unprepareAllDirs (void); BOOLEAN loadAddon (const char *addon); int loadIndices (uio_DirHandle *baseDir); diff --git a/sc2/src/uqm.c b/sc2/src/uqm.c index f6c4630a9..67f3716c2 100644 --- a/sc2/src/uqm.c +++ b/sc2/src/uqm.c @@ -486,6 +486,7 @@ main (int argc, char *argv[]) #if 0 unInitTempDir (); #endif + unprepareAllDirs (); uninitIO (); UnInitThreadSystem (); mem_uninit ();