QSslEllipticCurve: remove a copy when setting the curves

The only reason for copying QSslEllipticCurves into a temporary array
would be to be extra-pedantic about type safety, but in the end,
we can simply force a cast and remove the copy.

Change-Id: Ice8a036fe4b79ba438ce83b5eacf6158eb3f0ce7
Reviewed-by: Richard J. Moore <rich@kde.org>
This commit is contained in:
Giuseppe D'Angelo 2014-12-01 19:36:36 +01:00
parent e06f4c2558
commit 2e271795e7
2 changed files with 6 additions and 6 deletions

View File

@ -340,11 +340,12 @@ init_context:
#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_EC) #if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_EC)
// Set the curves to be used // Set the curves to be used
if (q_SSLeay() >= 0x10002000L) { if (q_SSLeay() >= 0x10002000L) {
QVarLengthArray<int, 32> curves; // SSL_CTX_ctrl wants a non-const pointer as last argument,
foreach (const QSslEllipticCurve curve, qcurves) // but let's avoid a copy into a temporary array
curves.append(curve.id); if (!q_SSL_CTX_ctrl(sslContext->ctx,
SSL_CTRL_SET_CURVES,
if (!q_SSL_CTX_ctrl(sslContext->ctx, SSL_CTRL_SET_CURVES, curves.size(), curves.data())) { qcurves.size(),
const_cast<int *>(reinterpret_cast<const int *>(qcurves.data())))) {
sslContext->errorStr = QSslSocket::tr("Error when setting the elliptic curves (%1)").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl()); sslContext->errorStr = QSslSocket::tr("Error when setting the elliptic curves (%1)").arg(QSslSocketBackendPrivate::getErrorsFromOpenSsl());
sslContext->errorCode = QSslError::UnspecifiedError; sslContext->errorCode = QSslError::UnspecifiedError;
return sslContext; return sslContext;

View File

@ -82,7 +82,6 @@ private:
friend Q_DECL_CONSTEXPR uint qHash(QSslEllipticCurve curve, uint seed) Q_DECL_NOTHROW friend Q_DECL_CONSTEXPR uint qHash(QSslEllipticCurve curve, uint seed) Q_DECL_NOTHROW
{ return qHash(curve.id, seed); } { return qHash(curve.id, seed); }
friend class QSslContext;
friend class QSslSocketPrivate; friend class QSslSocketPrivate;
friend class QSslSocketBackendPrivate; friend class QSslSocketBackendPrivate;
}; };