]> granicus.if.org Git - libevent/commitdiff
Fix assert() condition in evbuffer_drain() for IOCP
authorSuckShit <satansavior@gmail.com>
Fri, 20 Apr 2018 07:48:32 +0000 (15:48 +0800)
committerAzat Khuzhin <azat@libevent.org>
Sat, 2 Feb 2019 12:17:55 +0000 (15:17 +0300)
In the case of iocp, in the for loop above, there is a situation where:
  remaining == chain->off == 0

And this happens due to CHAIN_PINNED_R() case (that is used only in
buffer_iocp.c)

Closes: #630 (picked)
(cherry picked from commit ab3224c3e66cf92779f8bd91ffe90445e636fa50)

buffer.c

index 8113ce6cd0e06c0b15d002ca71002b79abb17fb8..80cb54ad01545d5f30d983b9c390b4cc991b3158 100644 (file)
--- a/buffer.c
+++ b/buffer.c
@@ -1146,7 +1146,7 @@ evbuffer_drain(struct evbuffer *buf, size_t len)
                }
 
                buf->first = chain;
-               EVUTIL_ASSERT(remaining < chain->off);
+               EVUTIL_ASSERT(remaining <= chain->off);
                chain->misalign += remaining;
                chain->off -= remaining;
        }