summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Roitzsch <mroi@users.sourceforge.net>2002-10-26 21:48:49 +0000
committerMichael Roitzsch <mroi@users.sourceforge.net>2002-10-26 21:48:49 +0000
commit18b611e99995f706fcdf25e52273cd1aff177c6e (patch)
tree4a74523cac058f546bdab2b8755ff981383684fb /src
parenta746b7f41bce5f3c67e7bc70fe02d51fbee7ffd2 (diff)
downloadxine-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.c15
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);