summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/modules.cpp4
-rw-r--r--src/modules/langpack/langpack.cpp12
2 files changed, 9 insertions, 7 deletions
diff --git a/src/core/modules.cpp b/src/core/modules.cpp
index c8d173f9a7..a0b6582d1c 100644
--- a/src/core/modules.cpp
+++ b/src/core/modules.cpp
@@ -134,7 +134,7 @@ void UnloadClcModule(void);
void UnloadContactListModule(void);
void UnloadEventsModule(void);
void UnloadIdleModule(void);
-void UnloadLangPackModule(void);
+void UnloadLangPackModule(bool);
void UnloadSslModule(void);
void UnloadNetlibModule(void);
void UnloadNewPlugins(void);
@@ -236,7 +236,7 @@ void UnloadDefaultModules(void)
UnloadUpdateNotifyModule();
UnloadNetlibModule();
UnloadSslModule();
- UnloadLangPackModule();
+ UnloadLangPackModule(true);
}
int InitialiseModularEngine(void)
diff --git a/src/modules/langpack/langpack.cpp b/src/modules/langpack/langpack.cpp
index cec6511386..01dd16365d 100644
--- a/src/modules/langpack/langpack.cpp
+++ b/src/modules/langpack/langpack.cpp
@@ -537,14 +537,16 @@ int LoadLangPackModule(void)
return 0;
}
-void UnloadLangPackModule()
+void UnloadLangPackModule(bool bRemoveAll)
{
if ( !bModuleInitialized ) return;
int i;
- for ( i=0; i < lMuuids.getCount(); i++ )
- mir_free( lMuuids[i] );
- lMuuids.destroy();
+ if ( bRemoveAll ) {
+ for ( i=0; i < lMuuids.getCount(); i++ )
+ mir_free( lMuuids[i] );
+ lMuuids.destroy();
+ }
LangPackEntry* p = langPack.entry;
for ( i=0; i < langPack.entryCount; i++, p++ ) {
@@ -574,7 +576,7 @@ INT_PTR ReloadLangpack(WPARAM wParam, LPARAM lParam)
if ( pszStr == NULL )
pszStr = langPack.filename;
- UnloadLangPackModule();
+ UnloadLangPackModule(false);
LoadLangPack(pszStr);
return 0;
}