From 99a4dbf75cc3f7a40354b6c6596f4ea7aa373c52 Mon Sep 17 00:00:00 2001 From: Guenter Bartsch Date: Fri, 1 Mar 2002 09:29:49 +0000 Subject: memleak fixes from ewald snel CVS patchset: 1535 CVS date: 2002/03/01 09:29:49 --- src/xine-engine/buffer.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'src/xine-engine/buffer.c') diff --git a/src/xine-engine/buffer.c b/src/xine-engine/buffer.c index e7a71f764..29f4d2227 100644 --- a/src/xine-engine/buffer.c +++ b/src/xine-engine/buffer.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: buffer.c,v 1.12 2001/11/17 14:26:39 f1rmb Exp $ + * $Id: buffer.c,v 1.13 2002/03/01 09:29:50 guenter Exp $ * * * contents: @@ -219,6 +219,33 @@ static int fifo_buffer_size (fifo_buffer_t *this) { return size; } +/* + * Destroy the buffer + */ +static void fifo_buffer_dispose (fifo_buffer_t *this) { + + buf_element_t *buf, *next; + char *mem = NULL; + + this->clear( this ); + buf = this->buffer_pool_top; + + while (buf != NULL) { + + next = buf->next; + + if (mem == NULL || buf->mem < mem) + mem = buf->mem; + + free (buf); + + buf = next; + } + + xine_free_aligned (mem); + free (this); +} + /* * allocate and initialize new (empty) fifo buffer */ @@ -238,6 +265,7 @@ fifo_buffer_t *fifo_buffer_new (int num_buffers, uint32_t buf_size) { this->get = fifo_buffer_get; this->clear = fifo_buffer_clear; this->size = fifo_buffer_size; + this->dispose = fifo_buffer_dispose; pthread_mutex_init (&this->mutex, NULL); pthread_cond_init (&this->not_empty, NULL); -- cgit v1.2.3