From fbf982dd12483b70947131fee1e863d9d9859a42 Mon Sep 17 00:00:00 2001 From: Denis Dzyubenko Date: Mon, 28 Feb 2011 12:52:17 +0100 Subject: Fixed querying QLocale::uiLanguage on Linux. Handle the case when the LC_MESSAGES only contains the language but not the country code. Also fixes qstring conversion - we cannot use fromRawData as the data is a local array that will be destroyed. Reviewed-by: trustme --- src/corelib/tools/qlocale_unix.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/corelib/tools/qlocale_unix.cpp b/src/corelib/tools/qlocale_unix.cpp index 72eefd5..c4aafa0 100644 --- a/src/corelib/tools/qlocale_unix.cpp +++ b/src/corelib/tools/qlocale_unix.cpp @@ -205,8 +205,11 @@ QVariant QSystemLocale::query(QueryType type, QVariant in) const QChar cntry[3]; int lang_len, cntry_len; if (splitLocaleName(QString::fromLatin1(d->lc_messages_var.constData(), d->lc_messages_var.size()), - lang, cntry, &lang_len, &cntry_len)) - return QStringList(QString::fromRawData(lang, lang_len) % QLatin1Char('-') % QString::fromRawData(cntry, cntry_len)); + lang, cntry, &lang_len, &cntry_len)) { + if (!cntry_len && lang_len) + return QStringList(QString(lang, lang_len)); + return QStringList(QString(lang, lang_len) % QLatin1Char('-') % QString(cntry, cntry_len)); + } } return QVariant(); } -- cgit v0.12