diff options
author | Michael Roitzsch <mroi@users.sourceforge.net> | 2002-10-26 21:48:49 +0000 |
---|---|---|
committer | Michael Roitzsch <mroi@users.sourceforge.net> | 2002-10-26 21:48:49 +0000 |
commit | 18b611e99995f706fcdf25e52273cd1aff177c6e (patch) | |
tree | 4a74523cac058f546bdab2b8755ff981383684fb /src | |
parent | a746b7f41bce5f3c67e7bc70fe02d51fbee7ffd2 (diff) | |
download | xine-lib-18b611e99995f706fcdf25e52273cd1aff177c6e.tar.gz xine-lib-18b611e99995f706fcdf25e52273cd1aff177c6e.tar.bz2 |
fix some segfaults when disposing event queues
CVS patchset: 3024
CVS date: 2002/10/26 21:48:49
Diffstat (limited to 'src')
-rw-r--r-- | src/xine-engine/events.c | 15 |
1 files changed, 9 insertions, 6 deletions
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); |