From 63114f4d3ce568e05346f7dba815b567da47894d Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Fri, 23 Jan 2015 09:59:24 +0100 Subject: QNetworkInterface: remove a use of (native) sprintf Instead of using sprintf (and #ifdef'ing our way around Windows warnings), simply do the conversion from uchar to hex digits ourselves, using QtMiscUtils. Also used the Qt::Uninitialized QString ctor, as the result length is exactly known ahead of time. Change-Id: Ie42e5f11c608e7719f7dc33d72739c1e41901b3b Reviewed-by: Thiago Macieira --- src/network/kernel/qnetworkinterface.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'src/network/kernel/qnetworkinterface.cpp') 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 > 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; } -- cgit v1.2.3