From 09a77f00412d2547733a7a2c0812455753e915f5 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 28 Oct 2011 09:04:50 +0200 Subject: Don't use QByteArray replace() overload that was only added in Qt 4.7 The bad thing is that another overload, added in Qt 4.5, was silently used in 4.5-4.6 versions which predictably did the wrong thing. --- odb/qt/basic/mysql/qbyte-array-traits.hxx | 8 +++++++- odb/qt/basic/pgsql/qbyte-array-traits.hxx | 8 +++++++- odb/qt/basic/sqlite/qbyte-array-traits.hxx | 8 +++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/odb/qt/basic/mysql/qbyte-array-traits.hxx b/odb/qt/basic/mysql/qbyte-array-traits.hxx index 52e620c..a80187d 100644 --- a/odb/qt/basic/mysql/qbyte-array-traits.hxx +++ b/odb/qt/basic/mysql/qbyte-array-traits.hxx @@ -36,7 +36,13 @@ namespace odb if (is_null) v = QByteArray (); else - v.replace (0, v.size (), b.data (), static_cast (n)); + { + // Note that we cannot use replace() here since a suitable + // overload was only added in Qt 4.7. + // + v.resize (static_cast (n)); + std::memcpy (v.data (), b.data (), n); + } } static void diff --git a/odb/qt/basic/pgsql/qbyte-array-traits.hxx b/odb/qt/basic/pgsql/qbyte-array-traits.hxx index cf0477e..8491794 100644 --- a/odb/qt/basic/pgsql/qbyte-array-traits.hxx +++ b/odb/qt/basic/pgsql/qbyte-array-traits.hxx @@ -36,7 +36,13 @@ namespace odb if (is_null) v = QByteArray (); else - v.replace (0, v.size (), b.data (), static_cast (n)); + { + // Note that we cannot use replace() here since a suitable + // overload was only added in Qt 4.7. + // + v.resize (static_cast (n)); + std::memcpy (v.data (), b.data (), n); + } } static void diff --git a/odb/qt/basic/sqlite/qbyte-array-traits.hxx b/odb/qt/basic/sqlite/qbyte-array-traits.hxx index 0d1437e..9c563f3 100644 --- a/odb/qt/basic/sqlite/qbyte-array-traits.hxx +++ b/odb/qt/basic/sqlite/qbyte-array-traits.hxx @@ -36,7 +36,13 @@ namespace odb if (is_null) v = QByteArray (); else - v.replace (0, v.size (), b.data (), static_cast (n)); + { + // Note that we cannot use replace() here since a suitable + // overload was only added in Qt 4.7. + // + v.resize (static_cast (n)); + std::memcpy (v.data (), b.data (), n); + } } static void -- cgit v1.1