diff options
author | Evgeny Grin <k2k@narod.ru> | 2021-11-26 13:50:52 +0300 |
---|---|---|
committer | Evgeny Grin <k2k@narod.ru> | 2021-11-26 19:00:31 +0300 |
commit | b25f28d0d77a63e1757a2afb02ccbddb4d21f44d (patch) | |
tree | 36938481a8c47346ba3a3c27e53568b4102cae44 | |
parent | 8f17428b84f877bd04e03b6cccd0f4f23101ef3a (diff) | |
download | gnutls-b25f28d0d77a63e1757a2afb02ccbddb4d21f44d.tar.gz |
sockets: fixed building for Windows with compilers without VLA support
Signed-off-by: Evgeny Grin <k2k@narod.ru>
-rw-r--r-- | lib/system/sockets.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/system/sockets.c b/lib/system/sockets.c index 5990d2dfa6..57c14f63b8 100644 --- a/lib/system/sockets.c +++ b/lib/system/sockets.c @@ -84,12 +84,15 @@ ssize_t system_writev(gnutls_transport_ptr_t ptr, const giovec_t * iovec, int iovec_cnt) { - WSABUF bufs[iovec_cnt]; + WSABUF bufs[32]; DWORD bytes_sent; - int to_send_cnt = 0; + DWORD to_send_cnt = 0; size_t to_send_bytes = 0; - while (to_send_cnt < iovec_cnt && to_send_bytes < SSIZE_MAX) { + if ((size_t)iovec_cnt > sizeof(bufs) / sizeof(bufs[0])) + iovec_cnt = sizeof(bufs) / sizeof(bufs[0]); + + while (to_send_cnt < (DWORD)iovec_cnt && to_send_bytes < SSIZE_MAX) { bufs[to_send_cnt].buf = iovec[to_send_cnt].iov_base; if (to_send_bytes + iovec[to_send_cnt].iov_len > SSIZE_MAX) { |