]> granicus.if.org Git - libevent/commitdiff
Do not use evbuffer_expand() to add the first chain to a buffer
authorNick Mathewson <nickm@torproject.org>
Fri, 26 Mar 2010 18:50:45 +0000 (14:50 -0400)
committerNick Mathewson <nickm@torproject.org>
Fri, 26 Mar 2010 18:50:45 +0000 (14:50 -0400)
(It's a big function, and using it this way is overkill.)

buffer.c

index 731a006477356e10062aa6d64b4c82f4a5bd9d77..06974bad05a57531348bd962b19e83b6d571c904 100644 (file)
--- a/buffer.c
+++ b/buffer.c
@@ -1310,9 +1310,10 @@ evbuffer_add(struct evbuffer *buf, const void *data_in, size_t datlen)
        /* If there are no chains allocated for this buffer, allocate one
         * big enough to hold all the data. */
        if (chain == NULL) {
-               if (evbuffer_expand(buf, datlen) == -1)
+               chain = evbuffer_chain_new(datlen);
+               if (!chain)
                        goto done;
-               chain = buf->last;
+               evbuffer_chain_insert(buf, chain);
        }
 
        if ((chain->flags & EVBUFFER_IMMUTABLE) == 0) {
@@ -1389,10 +1390,10 @@ evbuffer_prepend(struct evbuffer *buf, const void *data, size_t datlen)
        chain = buf->first;
 
        if (chain == NULL) {
-               if (evbuffer_expand(buf, datlen) == -1)
+               chain = evbuffer_chain_new(datlen);
+               if (!chain)
                        goto done;
-               chain = buf->first;
-               chain->misalign = chain->buffer_len;
+               evbuffer_chain_insert(buf, chain);
        }
 
        /* we cannot touch immutable buffers */