From bf540659718c78706622a6cf168387998dd725fd Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Thu, 9 Jun 2011 17:34:13 +0200 Subject: 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 --- src/corelib/kernel/qcore_mac.cpp | 16 ++++++++-------- 1 file 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 #include -#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(chars), length); + if (length == 0) + return QString(); - QVarLengthArray buffer(length); - CFStringGetCharacters(str, CFRangeMake(0, length), buffer.data()); - return QString(reinterpret_cast(buffer.constData()), length); + QString string(length, Qt::Uninitialized); + CFStringGetCharacters(str, CFRangeMake(0, length), reinterpret_cast(const_cast(string.unicode()))); + + return string; } QCFString::operator QString() const -- cgit v0.12