From 28c6f6084ecffb2232ca9ab36d1269e65f5ad780 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Fri, 1 Oct 2021 02:29:19 +0300 Subject: [PATCH] replace QVarLengthArray() with QSTACKARRAY() in QNativeSocketEnginePrivate::nativePendingDatagramSize() Signed-off-by: Ivailo Monev --- src/network/socket/qnativesocketengine_unix.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/network/socket/qnativesocketengine_unix.cpp b/src/network/socket/qnativesocketengine_unix.cpp index 6b69d0058..2a89ebba7 100644 --- a/src/network/socket/qnativesocketengine_unix.cpp +++ b/src/network/socket/qnativesocketengine_unix.cpp @@ -25,7 +25,6 @@ #include "qiodevice.h" #include "qhostaddress.h" #include "qelapsedtimer.h" -#include "qvarlengtharray.h" #include "qnetworkinterface.h" #include "qcorecommon_p.h" @@ -724,22 +723,24 @@ bool QNativeSocketEnginePrivate::nativeHasPendingDatagrams() const qint64 QNativeSocketEnginePrivate::nativePendingDatagramSize() const { - QVarLengthArray udpMessagePeekBuffer(8192); + ssize_t udpMessagePeekBufferSize = 8192; ssize_t recvResult = -1; for (;;) { + QSTACKARRAY(char, udpMessagePeekBuffer, udpMessagePeekBufferSize); + // the data written to udpMessagePeekBuffer is discarded, so // this function is still reentrant although it might not look // so. - recvResult = ::recv(socketDescriptor, udpMessagePeekBuffer.data(), - udpMessagePeekBuffer.size(), MSG_PEEK); + recvResult = ::recv(socketDescriptor, udpMessagePeekBuffer, + udpMessagePeekBufferSize, MSG_PEEK); if (recvResult == -1 && errno == EINTR) continue; - if (recvResult != (ssize_t) udpMessagePeekBuffer.size()) + if (recvResult != udpMessagePeekBufferSize) break; - udpMessagePeekBuffer.resize(udpMessagePeekBuffer.size() * 2); + udpMessagePeekBufferSize = (udpMessagePeekBufferSize * 2); } #if defined (QNATIVESOCKETENGINE_DEBUG) -- 2.11.0