]> granicus.if.org Git - libevent/commit
buffer: evbuffer_add_buffer(): clean empty chains from destination buffer
authorAzat Khuzhin <a3at.mail@gmail.com>
Tue, 7 Jun 2016 15:31:48 +0000 (18:31 +0300)
committerAzat Khuzhin <a3at.mail@gmail.com>
Fri, 17 Jun 2016 14:41:03 +0000 (17:41 +0300)
commit26fd9321cffd808bb0d280e55fef3ee4e914b4f7
treea5ee9f370101a6fbea509e68231df7af4b226b21
parenta272bc422754fc91d4cfb6e626829301febdae9e
buffer: evbuffer_add_buffer(): clean empty chains from destination buffer

@EMPanisset reported a problem (#358) with evbuffer_remove_buffer(), but
actually I think that the problem is in evbuffer_add_buffer() which introduces
this empty chain, all other callers (except evbuffer_prepend_buffer(), but it
doesn't have this problem though) should be safe.

And FWIW the only API that allows empty chains is evbuffer_add_reference(), and
we can add check there to avoid such issues, but for now I leaved this without
fixing, since I think that evbuffer_add_reference() with empty chains can be
used as a barrier (but this can be tricky).

Fixes: regress evbuffer/remove_buffer_with_empty2
v2: introduce/fixes evbuffer/add_buffer_with_empty
buffer.c