diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2012-02-22 16:17:30 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-02-26 09:14:11 +0100 |
commit | 8397a44bedf542b53284674c87268819f4911d31 (patch) | |
tree | cb3dd1025c99aaac9716d62a39ad3a6a5a17babf /src/corelib/tools/qbytearray.cpp | |
parent | ddf4b378f1e7eac62bd504a1e453cb7b894e21f2 (diff) |
QByteArray: deprecate QT_NO_CAST_FROM_BYTEARRAY-protected operators
The QByteArray::operator const {char,void}*() implicit
conversions are a source of subtle bugs, so they right-
fully can be disabled with QT_NO_CAST_FROM_BYTEARRAY.
const char *d = qstring.toLatin1(); // implicit conversion
while ( d ) // oops: d points to freed memory
// ...
But almost no-one ever enabled this macros in the wild
and many were bitten by these implicit conversions, so
this patch deprecates them.
I would have liked to remove them completely, but there
are just too many occurrences even in Qt itself to hope
to find all conditionally-compiled code that uses these.
Also fixes all code that needs to compile under
QT_NO_DEPRECATED (in qmake/, src/tools/).
I984706452db7d0841620a0f64e179906123f3849 separately
deals with the bulk of changes in src/ and examples/.
Depends on I5ea1ad3c96d9e64167be53c0c418c7b7dba51f68.
Change-Id: I8d47e6c293c80f61c6288c9f8d42fda41afe2267
Reviewed-by: David Faure <faure@kde.org>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Diffstat (limited to 'src/corelib/tools/qbytearray.cpp')
-rw-r--r-- | src/corelib/tools/qbytearray.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/corelib/tools/qbytearray.cpp b/src/corelib/tools/qbytearray.cpp index c74c61999d..1d37f578b8 100644 --- a/src/corelib/tools/qbytearray.cpp +++ b/src/corelib/tools/qbytearray.cpp @@ -343,7 +343,7 @@ int qstrcmp(const QByteArray &str1, const QByteArray &str2) { int l1 = str1.length(); int l2 = str2.length(); - int ret = memcmp(str1, str2, qMin(l1, l2)); + int ret = memcmp(str1.constData(), str2.constData(), qMin(l1, l2)); if (ret != 0) return ret; @@ -995,6 +995,8 @@ QByteArray &QByteArray::operator=(const char *str) /*! \fn QByteArray::operator const char *() const \fn QByteArray::operator const void *() const + \obsolete Use constData() instead. + Returns a pointer to the data stored in the byte array. The pointer can be used to access the bytes that compose the array. The data is '\\0'-terminated. The pointer remains valid as long @@ -2751,7 +2753,7 @@ QDataStream &operator<<(QDataStream &out, const QByteArray &ba) out << (quint32)0xffffffff; return out; } - return out.writeBytes(ba, ba.size()); + return out.writeBytes(ba.constData(), ba.size()); } /*! \relates QByteArray |