diff --git a/buffer.c b/buffer.c index c5f1b8a5..6786f902 100644 --- a/buffer.c +++ b/buffer.c @@ -885,9 +885,13 @@ APPEND_CHAIN(struct evbuffer *dst, struct evbuffer *src) { ASSERT_EVBUFFER_LOCKED(dst); ASSERT_EVBUFFER_LOCKED(src); - dst->last->next = src->first; + + struct evbuffer_chain **chp; + chp = evbuffer_free_trailing_empty_chains(dst); + *chp = src->first; + if (src->last_with_datap == &src->first) - dst->last_with_datap = &dst->last->next; + dst->last_with_datap = chp; else dst->last_with_datap = src->last_with_datap; dst->last = src->last;