From f139447d0a19999bec733843f7c7a388ef454f84 Mon Sep 17 00:00:00 2001 From: Adrien Destugues - PulkoMandy Date: Sat, 24 Nov 2012 21:56:45 +0100 Subject: [PATCH] Fix catalogs stored in resources We used the hash of the language code as a key for identifying catalogs. However, hash do collide, and in particular, "en" and "fi" have the same hash. Identify catalog resources by name instead. --- src/kits/locale/DefaultCatalog.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/kits/locale/DefaultCatalog.cpp b/src/kits/locale/DefaultCatalog.cpp index b56368f1e6..09d5978056 100644 --- a/src/kits/locale/DefaultCatalog.cpp +++ b/src/kits/locale/DefaultCatalog.cpp @@ -273,10 +273,8 @@ DefaultCatalog::ReadFromResource(const entry_ref &appOrAddOnRef) if (res != B_OK) return res; - int mangledLanguage = CatKey::HashFun(fLanguageName.String(), 0); - size_t sz; - const void *buf = rsrc.LoadResource('CADA', mangledLanguage, &sz); + const void *buf = rsrc.LoadResource('CADA', fLanguageName, &sz); if (!buf) return B_NAME_NOT_FOUND; @@ -370,7 +368,7 @@ DefaultCatalog::WriteToResource(const entry_ref &appOrAddOnRef) if (res == B_OK) { res = rsrc.AddResource('CADA', mangledLanguage, mallocIO.Buffer(), mallocIO.BufferLength(), - BString(fLanguageName) << " catalog"); + BString(fLanguageName)); } return res;