summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel
diff options
context:
space:
mode:
authorRitt Konstantin <ritt.ks@gmail.com>2011-06-09 15:34:13 (GMT)
committerDenis Dzyubenko <denis.dzyubenko@nokia.com>2011-06-09 15:34:13 (GMT)
commitbf540659718c78706622a6cf168387998dd725fd (patch)
treec729326fca23a8fb5856c494a3d2c6a5f46f29bb /src/corelib/kernel
parent597e21952e7fc2a18f09dda4619c23c30ea2dde6 (diff)
downloadQt-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.cpp16
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