From: James Courtier-D. <jcd...@us...> - 2001-11-30 16:20:02
|
Update of /cvsroot/xine/xine-lib/src/xine-engine In directory usw-pr-cvs1:/tmp/cvs-serv23897/xine-lib/src/xine-engine Modified Files: video_overlay.c Log Message: Fix a seg fault in hide_menu event. Index: video_overlay.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/xine-engine/video_overlay.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- video_overlay.c 2001/11/29 16:31:47 1.2 +++ video_overlay.c 2001/11/30 16:19:58 1.3 @@ -281,13 +281,17 @@ 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; |