diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2015-01-23 09:59:24 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2015-02-12 09:57:56 +0000 |
commit | 63114f4d3ce568e05346f7dba815b567da47894d (patch) | |
tree | 97ef71bd38f90bc4de2f3736e46c9ca4ffa332ec /src/network/kernel/qnetworkinterface.cpp | |
parent | 575029f09bedc6678bc6636361c82aabc9df7765 (diff) |
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 <thiago.macieira@intel.com>
Diffstat (limited to 'src/network/kernel/qnetworkinterface.cpp')
-rw-r--r-- | src/network/kernel/qnetworkinterface.cpp | 17 |
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; } |