From 18b611e99995f706fcdf25e52273cd1aff177c6e Mon Sep 17 00:00:00 2001 From: Michael Roitzsch Date: Sat, 26 Oct 2002 21:48:49 +0000 Subject: fix some segfaults when disposing event queues CVS patchset: 3024 CVS date: 2002/10/26 21:48:49 --- src/xine-engine/events.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/xine-engine/events.c b/src/xine-engine/events.c index 5562317aa..7ef07e85c 100644 --- a/src/xine-engine/events.c +++ b/src/xine-engine/events.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: events.c,v 1.14 2002/10/26 16:15:24 mroi Exp $ + * $Id: events.c,v 1.15 2002/10/26 21:48:49 mroi Exp $ * * Event handling functions * @@ -62,7 +62,7 @@ xine_event_t *xine_event_wait (xine_event_queue_t *queue) { } void xine_event_free (xine_event_t *event) { - if (event->data) free (event->data); + if (event->data && event->data_length > 0) free (event->data); free (event); } @@ -124,7 +124,7 @@ void xine_event_dispose_queue (xine_event_queue_t *queue) { xine_stream_t *stream = queue->stream; xine_event_t *event; - xine_event_t qevent; + xine_event_t *qevent; xine_event_queue_t *q; pthread_mutex_lock (&stream->event_queues_lock); @@ -147,12 +147,15 @@ void xine_event_dispose_queue (xine_event_queue_t *queue) { /* * send quit event */ + qevent = (xine_event_t *)malloc(sizeof(xine_event_t)); - qevent.type = XINE_EVENT_QUIT; - qevent.data_length = 0; + qevent->type = XINE_EVENT_QUIT; + qevent->stream = stream; + qevent->data = NULL; + qevent->data_length = 0; pthread_mutex_lock (&queue->lock); - xine_list_append_content (queue->events, &event); + xine_list_append_content (queue->events, qevent); pthread_cond_signal (&queue->new_event); pthread_mutex_unlock (&queue->lock); -- cgit v1.2.3