diff --git a/buffer.c b/buffer.c index 38048d40..89311af5 100644 --- a/buffer.c +++ b/buffer.c @@ -3184,7 +3184,8 @@ evbuffer_add_file(struct evbuffer *buf, int fd, ev_off_t offset, ev_off_t length if (!seg) return -1; r = evbuffer_add_file_segment(buf, seg, 0, length); - evbuffer_file_segment_free(seg); + if (r == 0) + evbuffer_file_segment_free(seg); return r; }