From: Ivailo Monev Date: Thu, 30 Sep 2021 23:29:19 +0000 (+0300) Subject: replace QVarLengthArray() with QSTACKARRAY() in QNativeSocketEnginePrivate::native... X-Git-Tag: 4.12.0~1710 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=28c6f6084ecffb2232ca9ab36d1269e65f5ad780;p=kde%2FKatie.git replace QVarLengthArray() with QSTACKARRAY() in QNativeSocketEnginePrivate::nativePendingDatagramSize() Signed-off-by: Ivailo Monev --- 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)