From 75155a7345dab9033552a8cd9c2f2655965ef83c Mon Sep 17 00:00:00 2001 From: Honglei Zhang Date: Wed, 7 Dec 2011 11:56:45 +0200 Subject: Revert "Fix sqlite driver memory eating due to close failure" This reverts commit 9a5fb6bd5f0fb3b37897bf722e4cc1673309623c. The mentioned fix has caused failure in qtcreator. Thus it has to be reverted and new fix for the memory leak will be made. --- src/sql/drivers/sqlite/qsql_sqlite.cpp | 7 ----- tests/auto/qsqlquery/tst_qsqlquery.cpp | 49 ---------------------------------- 2 files changed, 56 deletions(-) diff --git a/src/sql/drivers/sqlite/qsql_sqlite.cpp b/src/sql/drivers/sqlite/qsql_sqlite.cpp index 38e4a63..8294a55 100644 --- a/src/sql/drivers/sqlite/qsql_sqlite.cpp +++ b/src/sql/drivers/sqlite/qsql_sqlite.cpp @@ -104,7 +104,6 @@ class QSQLiteDriverPrivate public: inline QSQLiteDriverPrivate() : access(0) {} sqlite3 *access; - QList results; }; @@ -287,12 +286,10 @@ QSQLiteResult::QSQLiteResult(const QSQLiteDriver* db) { d = new QSQLiteResultPrivate(this); d->access = db->d->access; - db->d->results.append(this); } QSQLiteResult::~QSQLiteResult() { - qobject_cast(driver())->d->results.removeOne(this); d->cleanup(); delete d; } @@ -556,10 +553,6 @@ bool QSQLiteDriver::open(const QString & db, const QString &, const QString &, c void QSQLiteDriver::close() { if (isOpen()) { - foreach (QSQLiteResult *result, d->results) { - result->d->finalize(); - } - if (sqlite3_close(d->access) != SQLITE_OK) setLastError(qMakeError(d->access, tr("Error closing database"), QSqlError::ConnectionError)); diff --git a/tests/auto/qsqlquery/tst_qsqlquery.cpp b/tests/auto/qsqlquery/tst_qsqlquery.cpp index 652a82e..3cbdb63 100644 --- a/tests/auto/qsqlquery/tst_qsqlquery.cpp +++ b/tests/auto/qsqlquery/tst_qsqlquery.cpp @@ -215,8 +215,6 @@ private slots: void QTBUG_14132(); void QTBUG_21884_data() { generic_data("QSQLITE"); } void QTBUG_21884(); - void QTBUG_16967_data() { generic_data("QSQLITE"); } - void QTBUG_16967(); //clean close void sqlite_constraint_data() { generic_data("QSQLITE"); } void sqlite_constraint(); @@ -3152,53 +3150,6 @@ void tst_QSqlQuery::QTBUG_21884() } } -/** - * This test case test sqlite driver close function. Sqlite driver should close cleanly - * even if there is still outstanding prepared statement. - */ -void tst_QSqlQuery::QTBUG_16967() -{ - QFETCH(QString, dbName); - { - QSqlDatabase db = QSqlDatabase::database(dbName); - CHECK_DATABASE(db); - db.close(); - QCOMPARE(db.lastError().type(), QSqlError::NoError); - } - { - QSqlDatabase db = QSqlDatabase::database(dbName); - CHECK_DATABASE(db); - QSqlQuery q(db); - q.prepare("CREATE TABLE t1 (id INTEGER PRIMARY KEY, str TEXT);"); - db.close(); - QCOMPARE(db.lastError().type(), QSqlError::NoError); - } - { - QSqlDatabase db = QSqlDatabase::database(dbName); - CHECK_DATABASE(db); - QSqlQuery q(db); - q.prepare("CREATE TABLE t1 (id INTEGER PRIMARY KEY, str TEXT);"); - q.exec(); - db.close(); - QCOMPARE(db.lastError().type(), QSqlError::NoError); - } - { - QSqlDatabase db = QSqlDatabase::database(dbName); - CHECK_DATABASE(db); - QSqlQuery q(db); - q.exec("INSERT INTO t1 (id, str) VALUES(1, \"test1\");"); - db.close(); - QCOMPARE(db.lastError().type(), QSqlError::NoError); - } - { - QSqlDatabase db = QSqlDatabase::database(dbName); - CHECK_DATABASE(db); - QSqlQuery q(db); - q.exec("SELECT * FROM t1;"); - db.close(); - QCOMPARE(db.lastError().type(), QSqlError::NoError); - } -} void tst_QSqlQuery::oraOCINumber() { -- cgit v0.12 From d766d10bd57f131750e4ff522849e8648d2e3331 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Mon, 5 Dec 2011 12:37:37 +0200 Subject: Symbian: Only localize the application .rss that needs it, not all .rss Move LANG statement into proper RESOURCE block inside generated .mmp file, so it doesn't affect _reg.rss, which doesn't need to be localized. Task-number: ou1cimx1#947060 Reviewed-by: Pasi Pentikainen --- qmake/generators/symbian/symbiancommon.cpp | 1 - qmake/generators/symbian/symmake.cpp | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/qmake/generators/symbian/symbiancommon.cpp b/qmake/generators/symbian/symbiancommon.cpp index 8db82d6..c79bad2 100644 --- a/qmake/generators/symbian/symbiancommon.cpp +++ b/qmake/generators/symbian/symbiancommon.cpp @@ -397,7 +397,6 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, if (symbianLocalizationList.size()) { // Add localized resources to DEPLOYMENT if default resource deployment is done addLocalizedResourcesToDeployment("default_resource_deployment.files", symbianLocalizationList); - addLocalizedResourcesToDeployment("default_reg_deployment.files", symbianLocalizationList); } // deploy files specified by DEPLOYMENT variable diff --git a/qmake/generators/symbian/symmake.cpp b/qmake/generators/symbian/symmake.cpp index 694bbfb..0b41572 100644 --- a/qmake/generators/symbian/symmake.cpp +++ b/qmake/generators/symbian/symmake.cpp @@ -681,6 +681,7 @@ void SymbianMakefileGenerator::writeMmpFileResourcePart(QTextStream& t, const Sy locTarget.append(".rss"); t << "SOURCEPATH\t\t\t. " << endl; + t << MMP_START_RESOURCE "\t\t" << locTarget << endl; t << "LANG SC "; // no endl SymbianLocalizationListIterator iter(symbianLocalizationList); while (iter.hasNext()) { @@ -688,7 +689,6 @@ void SymbianMakefileGenerator::writeMmpFileResourcePart(QTextStream& t, const Sy t << loc.symbianLanguageCode << " "; // no endl } t << endl; - t << MMP_START_RESOURCE "\t\t" << locTarget << endl; t << "HEADER" << endl; t << "TARGETPATH\t\t\t" RESOURCE_DIRECTORY_MMP << endl; t << MMP_END_RESOURCE << endl << endl; -- cgit v0.12 From 258bc6752b2896846ce757ffd8f71de16028a27b Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Wed, 7 Dec 2011 15:08:50 +0200 Subject: Symbian: Fix language mappings for localize_deployment Some Qt language codes now map to two Symbian language codes. Also added the missing en_in mapping. Task-number: ou1cimx1#947060 Reviewed-by: Pasi Pentikainen --- mkspecs/common/symbian/symbian.conf | 8 ++++++-- mkspecs/features/symbian/localize_deployment.prf | 5 +++-- qmake/generators/symbian/symbiancommon.cpp | 15 ++++++++++----- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/mkspecs/common/symbian/symbian.conf b/mkspecs/common/symbian/symbian.conf index c50dc77..4e9690d 100644 --- a/mkspecs/common/symbian/symbian.conf +++ b/mkspecs/common/symbian/symbian.conf @@ -155,7 +155,9 @@ SYMBIAN_SUPPORTED_LANGUAGES = \ pt_br en_ca fr_ca el_cy tr_cy \ en_tw en_hk en_cn en_jp en_th \ sv_fi zh_hk es_419 en_za fr_ch \ - de_ch it_ch zh_tw + de_ch it_ch zh_tw en_in + +SYMBIAN_LANGUAGES_WITH_TWO_CODES = ms id # These directories must match what configure uses for QT_INSTALL_PLUGINS and QT_INSTALL_IMPORTS QT_PLUGINS_BASE_DIR = /resource/qt$${QT_LIBINFIX}/plugins @@ -295,8 +297,10 @@ defineReplace(addLanguageDependentPkgItem) { pkgItem = $$eval($$1) pkgLanguageList = - for(dummyItem, SYMBIAN_MATCHED_LANGUAGES) { + for(matchedLanguage, SYMBIAN_MATCHED_LANGUAGES) { pkgLanguageList += "\"$$pkgItem\"" + # If the language has two mappings, add the item another time. + contains(SYMBIAN_LANGUAGES_WITH_TWO_CODES, $$matchedLanguage): pkgLanguageList += "\"$$pkgItem\"" } isEmpty(pkgLanguageList): pkgLanguageList = "\"$$pkgItem\"" diff --git a/mkspecs/features/symbian/localize_deployment.prf b/mkspecs/features/symbian/localize_deployment.prf index 3e7f585..57c3e93 100644 --- a/mkspecs/features/symbian/localize_deployment.prf +++ b/mkspecs/features/symbian/localize_deployment.prf @@ -28,7 +28,7 @@ SYMBIAN_LANG.he = 57 #Hebrew SYMBIAN_LANG.hi = 58 #Hindi SYMBIAN_LANG.hu = 17 #Hungarian SYMBIAN_LANG.is = 15 #Icelandic -SYMBIAN_LANG.id = 59 #Indonesian +SYMBIAN_LANG.id = 59 327 #Indonesian / Indonesian APAC SYMBIAN_LANG.ga = 60 #Irish SYMBIAN_LANG.it = 05 #Italian SYMBIAN_LANG.ja = 32 #Japanese @@ -39,7 +39,7 @@ SYMBIAN_LANG.lo = 66 #Laothian SYMBIAN_LANG.lv = 67 #Latvian SYMBIAN_LANG.lt = 68 #Lithuanian SYMBIAN_LANG.mk = 69 #Macedonian -SYMBIAN_LANG.ms = 70 #Malay +SYMBIAN_LANG.ms = 70 326 #Malay / Malay APAC SYMBIAN_LANG.ml = 71 #Malayalam SYMBIAN_LANG.mr = 72 #Marathi SYMBIAN_LANG.mo = 73 #Moldavian @@ -88,6 +88,7 @@ SYMBIAN_LANG.en_hk = 158 #English as appropriate for use in Hong Kong SYMBIAN_LANG.en_cn = 159 #English as appropriate for use in the Peoples Republic of China SYMBIAN_LANG.en_jp = 160 #English as appropriate for use in Japan SYMBIAN_LANG.en_th = 161 #English as appropriate for use in Thailand +SYMBIAN_LANG.en_in = 230 #English as appropriate for use in India SYMBIAN_LANG.sv_fi = 85 #Finland Swedish SYMBIAN_LANG.zh_hk = 30 #HongKong Chinese SYMBIAN_LANG.es_419 = 83 #Latin American Spanish diff --git a/qmake/generators/symbian/symbiancommon.cpp b/qmake/generators/symbian/symbiancommon.cpp index c79bad2..e2dec40 100644 --- a/qmake/generators/symbian/symbiancommon.cpp +++ b/qmake/generators/symbian/symbiancommon.cpp @@ -864,12 +864,17 @@ void SymbianCommonGenerator::fillQt2SymbianLocalizationList(SymbianLocalizationL QStringList symbianLanguages = generator->project->values("SYMBIAN_MATCHED_LANGUAGES"); foreach (QString qtCode, symbianLanguages) { - SymbianLocalization newLoc; QString symbianCodeVariable = symbianCodePrefix + qtCode; - newLoc.symbianLanguageCode = generator->project->first(symbianCodeVariable); - if (!newLoc.symbianLanguageCode.isEmpty()) { - newLoc.qtLanguageCode = qtCode; - symbianLocalizationList->append(newLoc); + QStringList symbianCodes = generator->project->values(symbianCodeVariable); + // Some languages have more than one Symbian code, so they get more than one + // entry in symbianLocalizationList. + foreach (QString symbianCode, symbianCodes) { + SymbianLocalization newLoc; + newLoc.symbianLanguageCode = symbianCode; + if (!newLoc.symbianLanguageCode.isEmpty()) { + newLoc.qtLanguageCode = qtCode; + symbianLocalizationList->append(newLoc); + } } } } -- cgit v0.12