diff options
| author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2023-04-07 11:58:38 +0200 |
|---|---|---|
| committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2023-06-21 00:30:41 +0200 |
| commit | 3f72b0d5fc70d3cf7daa4badccd5a40fc8b0726a (patch) | |
| tree | 4d2a0d0c6874c4014f04940ab7470c402236d3f9 /src/sql/compat/removed_api.cpp | |
| parent | 054a64ce67421b213df73a9bcfda3fa6e9c6e64f (diff) | |
QSqlResult: remove bad API returning non-const reference
QSqlResult::boundValues is a const member function, but returned a non-
const reference to a QList<QVariant>. This is a bad and potentially
dangerous API, as callers can modify the list stored in QSqlResult.
Move that API into the removed_api translation unit, remove it from
Qt 6.6 on and replace it with two suitable overloads where the const
version returns a QVariantList by value, and the non-const overload
returns a mutable reference.
Driver implementations that used to call the const overload to get a
mutable reference are now calling the non-const overload instead
(those calls are all made in the non-const exec() or equivalent driver
implementations).
As a drive-by, replace "vector" with "list" in the documentation.
Pick-to: 6.6
Change-Id: I6e4fd8f5749b939cdb609bf5876735e9b30b2b5a
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Diffstat (limited to 'src/sql/compat/removed_api.cpp')
| -rw-r--r-- | src/sql/compat/removed_api.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/sql/compat/removed_api.cpp b/src/sql/compat/removed_api.cpp index ff223b9967b..9da60eceda0 100644 --- a/src/sql/compat/removed_api.cpp +++ b/src/sql/compat/removed_api.cpp @@ -9,10 +9,6 @@ QT_USE_NAMESPACE #if QT_SQL_REMOVED_SINCE(6, 4) -// #include <qotherheader.h> -// // implement removed functions from qotherheader.h -// order sections alphabetically to reduce chances of merge conflicts - #endif // QT_SQL_REMOVED_SINCE(6, 4) #if QT_SQL_REMOVED_SINCE(6, 5) @@ -36,8 +32,21 @@ void QSqlTableModel::setQuery(const QSqlQuery &query) #endif // QT_CONFIG(sqlmodel) +#endif // QT_SQL_REMOVED_SINCE(6, 5) + +#if QT_SQL_REMOVED_SINCE(6, 6) + +#include "qsqlresult.h" +#include <QtSql/private/qsqlresult_p.h> + // #include <qotherheader.h> // // implement removed functions from qotherheader.h // order sections alphabetically to reduce chances of merge conflicts -#endif // QT_SQL_REMOVED_SINCE(6, 5) +QList<QVariant> &QSqlResult::boundValues() const +{ + Q_D(const QSqlResult); + return const_cast<QSqlResultPrivate *>(d)->values; +} + +#endif // QT_SQL_REMOVED_SINCE(6, 6) |
