diff options
| author | Richard Nyberg <rnyberg@murmeldjur.se> | 2007-02-25 17:34:12 +0000 |
|---|---|---|
| committer | Richard Nyberg <rnyberg@murmeldjur.se> | 2007-02-25 17:34:12 +0000 |
| commit | 91f85c222be7ef247c8f2e18815eb23c336ed081 (patch) | |
| tree | e622ff381949cdbda284550f1fb701e29b0eba76 /libevent/buffer.c | |
| parent | 372cec7b53ce0959ba5756e1e51f1f15793a3663 (diff) | |
| download | btpd-91f85c222be7ef247c8f2e18815eb23c336ed081.tar.gz btpd-91f85c222be7ef247c8f2e18815eb23c336ed081.zip | |
Update to libevent from patches-1.3 r335.
Diffstat (limited to 'libevent/buffer.c')
| -rw-r--r-- | libevent/buffer.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/libevent/buffer.c b/libevent/buffer.c index 1585389..77efd0c 100644 --- a/libevent/buffer.c +++ b/libevent/buffer.c @@ -135,17 +135,23 @@ evbuffer_add_vprintf(struct evbuffer *buf, const char *fmt, va_list ap) va_list aq; for (;;) { - buffer = buf->buffer + buf->off; + buffer = (char *)buf->buffer + buf->off; space = buf->totallen - buf->misalign - buf->off; +#ifndef va_copy +#define va_copy(dst, src) memcpy(&(dst), &(src), sizeof(va_list)) +#endif va_copy(aq, ap); + #ifdef WIN32 sz = vsnprintf(buffer, space - 1, fmt, aq); buffer[space - 1] = '\0'; #else sz = vsnprintf(buffer, space, fmt, aq); #endif + va_end(aq); + if (sz == -1) return (-1); if (sz < space) { @@ -285,7 +291,7 @@ evbuffer_expand(struct evbuffer *buf, size_t datlen) } int -evbuffer_add(struct evbuffer *buf, void *data, size_t datlen) +evbuffer_add(struct evbuffer *buf, const void *data, size_t datlen) { size_t need = buf->misalign + buf->off + datlen; size_t oldoff = buf->off; @@ -429,12 +435,13 @@ evbuffer_find(struct evbuffer *buffer, const u_char *what, size_t len) u_char *search = buffer->buffer; u_char *p; - while ((p = memchr(search, *what, remain)) != NULL && remain >= len) { + while ((p = memchr(search, *what, remain)) != NULL) { + remain = buffer->off - (size_t)(search - buffer->buffer); + if (remain < len) + break; if (memcmp(p, what, len) == 0) return (p); - search = p + 1; - remain = buffer->off - (size_t)(search - buffer->buffer); } return (NULL); |