summaryrefslogtreecommitdiffstats
path: root/src/sql/drivers
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2016-02-15 13:42:51 +0100
committerMarc Mutz <marc.mutz@kdab.com>2016-02-15 23:12:54 +0000
commita93ff2c2483b7d2f0c678aa3e52495e4cb36e9e1 (patch)
treec120d50e29bc7282ad8e147fea4ba27428a41aec /src/sql/drivers
parentc7c7cf636b07f8467f9028bf1e22ac9b87c1c7a7 (diff)
Reduce allocations in QSQLiteDriver::open()'s connection options parsing
- Use splitRef() instead of split(), avoiding small temporary QStrings. - Don't remove all spaces before splitting, trim strings at the QStringRef level later, where needed. This will reject nonsense strings like QSQL_ LITE _BUSY_ TI MEOUT= 1 2 3 that were previously (wrongly) accepted. - Use C++11 range-for loop. Change-Id: I875c4cf47b7a283ba55783f70c903bb9947e1cd7 Reviewed-by: Mark Brand <mabrand@mabrand.nl>
Diffstat (limited to 'src/sql/drivers')
-rw-r--r--src/sql/drivers/sqlite/qsql_sqlite.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/sql/drivers/sqlite/qsql_sqlite.cpp b/src/sql/drivers/sqlite/qsql_sqlite.cpp
index c1071c9222..1fff427a66 100644
--- a/src/sql/drivers/sqlite/qsql_sqlite.cpp
+++ b/src/sql/drivers/sqlite/qsql_sqlite.cpp
@@ -613,13 +613,17 @@ bool QSQLiteDriver::open(const QString & db, const QString &, const QString &, c
bool openReadOnlyOption = false;
bool openUriOption = false;
- const QStringList opts = QString(conOpts).remove(QLatin1Char(' ')).split(QLatin1Char(';'));
- foreach (const QString &option, opts) {
- if (option.startsWith(QLatin1String("QSQLITE_BUSY_TIMEOUT="))) {
- bool ok;
- const int nt = option.midRef(21).toInt(&ok);
- if (ok)
- timeOut = nt;
+ const auto opts = conOpts.splitRef(QLatin1Char(';'));
+ for (auto option : opts) {
+ option = option.trimmed();
+ if (option.startsWith(QLatin1String("QSQLITE_BUSY_TIMEOUT"))) {
+ option = option.mid(20).trimmed();
+ if (option.startsWith(QLatin1Char('='))) {
+ bool ok;
+ const int nt = option.mid(1).trimmed().toInt(&ok);
+ if (ok)
+ timeOut = nt;
+ }
} else if (option == QLatin1String("QSQLITE_OPEN_READONLY")) {
openReadOnlyOption = true;
} else if (option == QLatin1String("QSQLITE_OPEN_URI")) {