summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools
diff options
context:
space:
mode:
authorGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>2019-02-10 18:43:46 +0100
committerGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>2019-03-05 13:24:33 +0000
commit40e4ab673a06d509f7672de6cbf05c80f981aeb6 (patch)
tree7e314113568e299b6a10190569d493eb120636b2 /src/corelib/tools
parentd41a46bc39d35ddcf12f092c1b9ab41cc6c2aa16 (diff)
Simplify toStdWString
In C++17: just use std::basic_string::data(). In C++11: dereferencing begin() on an empty string is undefined behavior on all compilers, not just MSVC, so remove that workaround. Instead of the reference-dereference combo, use std::basic_string::front(). Change-Id: I3229597e000311ce71e4083dca6667bb56d8f8e3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/tools')
-rw-r--r--src/corelib/tools/qstring.h12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h
index 2b98787cc2..23972d196c 100644
--- a/src/corelib/tools/qstring.h
+++ b/src/corelib/tools/qstring.h
@@ -1380,14 +1380,12 @@ inline std::wstring QString::toStdWString() const
{
std::wstring str;
str.resize(length());
-
-#ifdef Q_CC_MSVC
- // VS2005 crashes if the string is empty
- if (!length())
- return str;
+#if __cplusplus >= 201703L
+ str.resize(toWCharArray(str.data()));
+#else
+ if (length())
+ str.resize(toWCharArray(&str.front()));
#endif
-
- str.resize(toWCharArray(&(*str.begin())));
return str;
}