Avoid the memory leaks from translations

Instead use a hash to cache the translations (and allow for the ability to
clear the hash so we can even switch translations at runtime...).

Now Qt will keep track of the memory and release it for us when we are
done with it.

This avoids the memory leak introduced in commit 4ecb35bf5ff2 ("Make a
copy of the translated text").

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2013-10-08 22:44:38 -07:00
parent 7813ac86bf
commit 2e43769108
2 changed files with 17 additions and 6 deletions

View file

@ -2,9 +2,17 @@
#include <QString>
#include <gettextfromc.h>
char *gettextFromC::gettext(const char *text)
const char *gettextFromC::gettext(const char *text)
{
return strdup(tr(text).toLocal8Bit().data());
QByteArray &result = translationCache[text];
if (result.isEmpty())
result = tr(text).toUtf8();
return result.constData();
}
void gettextFromC::reset(void)
{
translationCache.clear();
}
gettextFromC* gettextFromC::instance()