diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2016-02-15 13:42:51 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2016-02-15 23:12:54 +0000 |
commit | a93ff2c2483b7d2f0c678aa3e52495e4cb36e9e1 (patch) | |
tree | c120d50e29bc7282ad8e147fea4ba27428a41aec /src/sql/drivers | |
parent | c7c7cf636b07f8467f9028bf1e22ac9b87c1c7a7 (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.cpp | 18 |
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")) { |