diff options
author | James Courtier-Dutton <jcdutton@users.sourceforge.net> | 2001-11-30 16:19:58 +0000 |
---|---|---|
committer | James Courtier-Dutton <jcdutton@users.sourceforge.net> | 2001-11-30 16:19:58 +0000 |
commit | 99d9a497fdce00a6ff4023fd0f92850feaa293cb (patch) | |
tree | 844726b0b151d15592a1498fe430d23667a82dc8 /src/xine-engine/video_overlay.c | |
parent | 4c98a93cafc9f5f45107eda78e4d6b19f8649f99 (diff) | |
download | xine-lib-99d9a497fdce00a6ff4023fd0f92850feaa293cb.tar.gz xine-lib-99d9a497fdce00a6ff4023fd0f92850feaa293cb.tar.bz2 |
Fix a seg fault in hide_menu event.
CVS patchset: 1143
CVS date: 2001/11/30 16:19:58
Diffstat (limited to 'src/xine-engine/video_overlay.c')
-rw-r--r-- | src/xine-engine/video_overlay.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/xine-engine/video_overlay.c b/src/xine-engine/video_overlay.c index a095b8e4b..3e497aced 100644 --- a/src/xine-engine/video_overlay.c +++ b/src/xine-engine/video_overlay.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: video_overlay.c,v 1.2 2001/11/29 16:31:47 miguelfreitas Exp $ + * $Id: video_overlay.c,v 1.3 2001/11/30 16:19:58 jcdutton Exp $ * */ @@ -281,13 +281,17 @@ static int32_t video_overlay_add_event(video_overlay_instance_t *this_gen, void fprintf(stderr,"video_overlay: error: event->object.overlay was not freed!\n"); } - this->video_overlay_events[new_event].event->object.overlay = xine_xmalloc (sizeof(vo_overlay_t)); - memcpy(this->video_overlay_events[new_event].event->object.overlay, + if( event->object.overlay ) { + this->video_overlay_events[new_event].event->object.overlay = xine_xmalloc (sizeof(vo_overlay_t)); + xine_fast_memcpy(this->video_overlay_events[new_event].event->object.overlay, event->object.overlay, sizeof(vo_overlay_t)); - /* We took the callers rle and data, therefore it will be our job to free it */ - /* clear callers overlay so it will not be freed twice */ - memset(event->object.overlay,0,sizeof(vo_overlay_t)); + /* We took the callers rle and data, therefore it will be our job to free it */ + /* clear callers overlay so it will not be freed twice */ + memset(event->object.overlay,0,sizeof(vo_overlay_t)); + } else { + this->video_overlay_events[new_event].event->object.overlay = NULL; + } } else { fprintf(stderr, "No spare subtitle event slots\n"); new_event = -1; |