summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/network/kernel/qnetworkinterface.cpp17
1 files changed, 7 insertions, 10 deletions
diff --git a/src/network/kernel/qnetworkinterface.cpp b/src/network/kernel/qnetworkinterface.cpp
index 3ed09c1483..c62244fab3 100644
--- a/src/network/kernel/qnetworkinterface.cpp
+++ b/src/network/kernel/qnetworkinterface.cpp
@@ -36,6 +36,7 @@
#include "qdebug.h"
#include "qendian.h"
+#include "private/qtools_p.h"
#ifndef QT_NO_NETWORKINTERFACE
@@ -116,18 +117,14 @@ QList<QSharedDataPointer<QNetworkInterfacePrivate> > QNetworkInterfaceManager::a
QString QNetworkInterfacePrivate::makeHwAddress(int len, uchar *data)
{
- QString result;
+ const int outLen = qMax(len * 2 + (len - 1) * 1, 0);
+ QString result(outLen, Qt::Uninitialized);
+ QChar *out = result.data();
for (int i = 0; i < len; ++i) {
if (i)
- result += QLatin1Char(':');
-
- char buf[3];
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) && defined(_MSC_VER) && _MSC_VER >= 1400
- sprintf_s(buf, 3, "%02hX", ushort(data[i]));
-#else
- sprintf(buf, "%02hX", ushort(data[i]));
-#endif
- result += QLatin1String(buf);
+ *out++ = QLatin1Char(':');
+ *out++ = QLatin1Char(QtMiscUtils::toHexUpper(data[i] / 16));
+ *out++ = QLatin1Char(QtMiscUtils::toHexUpper(data[i] % 16));
}
return result;
}