From: <sim...@on...> - 2007-07-13 20:19:56
|
# HG changeset patch # User Simon Farnsworth <sim...@on...> # Date 1184236214 -3600 # Node ID bb73e4fa29d761f0b408e865af45a0c1a94062b2 # Parent dcfb33f69bc47dc1da6890335df02bf4bce891a2 Fix memory leak in video_overlay.c When running DVB subtitles for a long period of time (over 24 hours), we noticed a slow leak of memory. This patch removes one cause of leakage for us. diff -r bb73e4fa29d761f0b408e865af45a0c1a94062b2 -r dcfb33f69bc47dc1da6890335df02bf4bce891a2 src/xine-engine/video_overlay.c --- a/src/xine-engine/video_overlay.c Thu Jul 12 11:30:14 2007 +0100 +++ b/src/xine-engine/video_overlay.c Fri Jul 13 15:41:12 2007 +0100 @@ -395,6 +395,8 @@ static int video_overlay_event( video_ov #endif /* free any overlay associated with this event */ if (this->events[this_event].event->object.overlay != NULL) { + if( this->events[this_event].event->object.overlay->rle != NULL ) + free( this->events[this_event].event->object.overlay->rle ); free(this->events[this_event].event->object.overlay); this->events[this_event].event->object.overlay = NULL; } @@ -406,9 +408,11 @@ static int video_overlay_event( video_ov printf ("video_overlay: FREE SPU NOW\n"); #endif /* free any overlay associated with this event */ - if (this->events[this_event].event->object.overlay != NULL) { + if( this->events[this_event].event->object.overlay != NULL) { + if( this->events[this_event].event->object.overlay->rle != NULL ) + free( this->events[this_event].event->object.overlay->rle ); free(this->events[this_event].event->object.overlay); - this->events[this_event].event->object.overlay = NULL; + this->events[this_event].event->object.overlay = NULL; } /* this avoid removing this_event from the queue * (it will be removed at the end of this loop) */ |