diff options
author | Jack Tang <1190545+jackhftang@users.noreply.github.com> | 2019-11-22 22:37:59 +0800 |
---|---|---|
committer | Miran <narimiran@disroot.org> | 2019-11-22 15:37:59 +0100 |
commit | f0c5d99924768175c332f412eb9c72ce5e28d0cb (patch) | |
tree | 836317cedbfada1d2b457f8c58350f100ea94ffc | |
parent | 5bb6c67a45045f41c39b11c085f5ff072e1615d7 (diff) | |
download | Nim-f0c5d99924768175c332f412eb9c72ce5e28d0cb.tar.gz |
index out of bounds exception when data is empty (#12428)
-rw-r--r-- | lib/pure/asyncdispatch.nim | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/lib/pure/asyncdispatch.nim b/lib/pure/asyncdispatch.nim index a99a465f8..d7d829742 100644 --- a/lib/pure/asyncdispatch.nim +++ b/lib/pure/asyncdispatch.nim @@ -1838,15 +1838,17 @@ proc send*(socket: AsyncFD, data: string, ## Sends ``data`` to ``socket``. The returned future will complete once all ## data has been sent. var retFuture = newFuture[void]("send") - - let sendFut = socket.send(unsafeAddr data[0], data.len, flags) - sendFut.callback = - proc () = - keepAlive(data) - if sendFut.failed: - retFuture.fail(sendFut.error) - else: - retFuture.complete() + if data.len > 0: + let sendFut = socket.send(unsafeAddr data[0], data.len, flags) + sendFut.callback = + proc () = + keepAlive(data) + if sendFut.failed: + retFuture.fail(sendFut.error) + else: + retFuture.complete() + else: + retFuture.complete() return retFuture |