diff options
author | Ritt Konstantin <ritt.ks@gmail.com> | 2011-06-09 15:34:13 (GMT) |
---|---|---|
committer | Denis Dzyubenko <denis.dzyubenko@nokia.com> | 2011-06-09 15:34:13 (GMT) |
commit | bf540659718c78706622a6cf168387998dd725fd (patch) | |
tree | c729326fca23a8fb5856c494a3d2c6a5f46f29bb /src/corelib/kernel | |
parent | 597e21952e7fc2a18f09dda4619c23c30ea2dde6 (diff) | |
download | Qt-bf540659718c78706622a6cf168387998dd725fd.zip Qt-bf540659718c78706622a6cf168387998dd725fd.tar.gz Qt-bf540659718c78706622a6cf168387998dd725fd.tar.bz2 |
get rid of extra copying
by some (unknown) reason, the QVarLengthArray was used as an intermediate buffer
for the UniChar data that was copied again few lines later via the QString's c-tor;
add check for (length == 0) as it equals to the old (!chars) test but avoids
an unnecessary fallback code execution
Merge-request: 2615
Reviewed-by: Denis Dzyubenko <denis.dzyubenko@nokia.com>
Diffstat (limited to 'src/corelib/kernel')
-rw-r--r-- | src/corelib/kernel/qcore_mac.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/corelib/kernel/qcore_mac.cpp b/src/corelib/kernel/qcore_mac.cpp index 0814c1a..e0dae37 100644 --- a/src/corelib/kernel/qcore_mac.cpp +++ b/src/corelib/kernel/qcore_mac.cpp @@ -41,22 +41,22 @@ #include <private/qcore_mac_p.h> #include <new> -#include "qvarlengtharray.h" QT_BEGIN_NAMESPACE QString QCFString::toQString(CFStringRef str) { - if(!str) + if (!str) return QString(); + CFIndex length = CFStringGetLength(str); - const UniChar *chars = CFStringGetCharactersPtr(str); - if (chars) - return QString(reinterpret_cast<const QChar *>(chars), length); + if (length == 0) + return QString(); - QVarLengthArray<UniChar> buffer(length); - CFStringGetCharacters(str, CFRangeMake(0, length), buffer.data()); - return QString(reinterpret_cast<const QChar *>(buffer.constData()), length); + QString string(length, Qt::Uninitialized); + CFStringGetCharacters(str, CFRangeMake(0, length), reinterpret_cast<UniChar *>(const_cast<QChar *>(string.unicode()))); + + return string; } QCFString::operator QString() const |