QByteArray: deprecate QT_NO_CAST_FROM_BYTEARRAY-protected operators
authorMarc Mutz <marc.mutz@kdab.com>
Wed, 22 Feb 2012 15:17:30 +0000 (16:17 +0100)
committerQt by Nokia <qt-info@nokia.com>
Sun, 26 Feb 2012 08:14:11 +0000 (09:14 +0100)
commit8397a44bedf542b53284674c87268819f4911d31
treecb3dd1025c99aaac9716d62a39ad3a6a5a17babf
parentddf4b378f1e7eac62bd504a1e453cb7b894e21f2
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>
18 files changed:
qmake/generators/integrity/gbuild.cpp
qmake/generators/mac/pbuilder_pbx.cpp
qmake/generators/makefiledeps.cpp
qmake/generators/win32/msvc_objectmodel.cpp
qmake/generators/win32/msvc_objectmodel.h
qmake/project.cpp
src/corelib/codecs/qtextcodec.cpp
src/corelib/io/qfilesystemengine_unix.cpp
src/corelib/io/qsettings.cpp
src/corelib/kernel/qvariant.cpp
src/corelib/tools/qbytearray.cpp
src/corelib/tools/qbytearray.h
src/corelib/tools/qlocale_unix.cpp
src/corelib/tools/qstring.cpp
src/tools/rcc/rcc.cpp
src/tools/uic/cpp/cppwriteicondata.cpp
src/xml/dom/qdom.cpp
src/xml/sax/qxml.cpp