diff --git a/src/kits/locale/LocaleRoster.cpp b/src/kits/locale/LocaleRoster.cpp index dee3807a28..226c3687ac 100644 --- a/src/kits/locale/LocaleRoster.cpp +++ b/src/kits/locale/LocaleRoster.cpp @@ -446,7 +446,7 @@ BLocaleRoster::GetAvailableCatalogs(BMessage* languageList, CatalogAddOnInfo* info = (CatalogAddOnInfo*)fData->fCatalogAddOnInfos.ItemAt(i); - if (!info->MakeSureItsLoaded() || !info->fLanguagesFunc) + if (!info->fLanguagesFunc) continue; info->fLanguagesFunc(languageList, sigPattern, langPattern, diff --git a/src/kits/locale/LocaleRosterData.cpp b/src/kits/locale/LocaleRosterData.cpp index 0859805736..b47d0d1e1d 100644 --- a/src/kits/locale/LocaleRosterData.cpp +++ b/src/kits/locale/LocaleRosterData.cpp @@ -402,8 +402,12 @@ LocaleRosterData::_InitializeCatalogAddOns() CatalogAddOnInfo* addOnInfo = new(std::nothrow) CatalogAddOnInfo(dent->d_name, addOnFolderName, priority); - if (addOnInfo) - fCatalogAddOnInfos.AddItem((void*)addOnInfo); + if (addOnInfo != NULL) { + if (addOnInfo->MakeSureItsLoaded()) + fCatalogAddOnInfos.AddItem((void*)addOnInfo); + else + delete addOnInfo; + } } } // Bump the dirent-pointer by length of the dirent just handled: diff --git a/src/kits/locale/MutableLocaleRoster.cpp b/src/kits/locale/MutableLocaleRoster.cpp index 3771e1e2f0..f5d42f0e44 100644 --- a/src/kits/locale/MutableLocaleRoster.cpp +++ b/src/kits/locale/MutableLocaleRoster.cpp @@ -150,8 +150,7 @@ MutableLocaleRoster::CreateCatalog(const char* type, const char* signature, for (int32 i = 0; i < count; ++i) { CatalogAddOnInfo* info = (CatalogAddOnInfo*) fData->fCatalogAddOnInfos.ItemAt(i); - if (info->fName.ICompare(type) != 0 || !info->MakeSureItsLoaded() - || !info->fCreateFunc) + if (info->fName.ICompare(type) != 0 || !info->fCreateFunc) continue; BCatalogData* catalog = info->fCreateFunc(signature, language); @@ -189,7 +188,7 @@ MutableLocaleRoster::LoadCatalog(const entry_ref& catalogOwner, CatalogAddOnInfo* info = (CatalogAddOnInfo*) fData->fCatalogAddOnInfos.ItemAt(i); - if (!info->MakeSureItsLoaded() || !info->fInstantiateFunc) + if (!info->fInstantiateFunc) continue; BMessage languages; if (language != NULL) { @@ -277,8 +276,7 @@ MutableLocaleRoster::LoadCatalog(const char* signature, for (int32 i = 0; i < count; ++i) { CatalogAddOnInfo* info = (CatalogAddOnInfo*) fData->fCatalogAddOnInfos.ItemAt(i); - if (info->MakeSureItsLoaded() - && info->fInstantiateFunc + if (info->fInstantiateFunc == BPrivate::DefaultCatalog::Instantiate) { defaultCatalogInfo = info; break;