From c6ab3cf6d9cf5f5ade3b8fc48590e1bc4794cb43 Mon Sep 17 00:00:00 2001 From: s_nakamoto Date: Wed, 17 Feb 2010 23:55:43 +0000 Subject: safer wxGetTranslation wrapper git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@67 1a98c847-1fd6-4fd8-948a-caf3550aa51b --- util.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'util.cpp') diff --git a/util.cpp b/util.cpp index 266c1dd7d..f4ce55664 100644 --- a/util.cpp +++ b/util.cpp @@ -431,6 +431,35 @@ void ParseParameters(int argc, char* argv[]) } +const char* wxGetTranslation(const char* pszEnglish) +{ + // Wrapper of wxGetTranslation returning the same const char* type as was passed in + static CCriticalSection cs; + CRITICAL_BLOCK(cs) + { + // Look in cache + static map mapCache; + map::iterator mi = mapCache.find(pszEnglish); + if (mi != mapCache.end()) + return (*mi).second; + + // wxWidgets translation + const char* pszTranslated = wxGetTranslation(wxString(pszEnglish, wxConvUTF8)).utf8_str(); + if (strcmp(pszEnglish, pszTranslated) == 0) + return pszEnglish; + + // Add to cache, memory doesn't need to be freed + char* pszCached = new char[strlen(pszTranslated)+1]; + strcpy(pszCached, pszTranslated); + mapCache[pszEnglish] = pszCached; + return pszCached; + } +} + + + + + -- cgit v1.2.3