summaryrefslogtreecommitdiff
path: root/src/xine-engine/video_overlay.c
diff options
context:
space:
mode:
authorJames Courtier-Dutton <jcdutton@users.sourceforge.net>2001-11-30 16:19:58 +0000
committerJames Courtier-Dutton <jcdutton@users.sourceforge.net>2001-11-30 16:19:58 +0000
commit99d9a497fdce00a6ff4023fd0f92850feaa293cb (patch)
tree844726b0b151d15592a1498fe430d23667a82dc8 /src/xine-engine/video_overlay.c
parent4c98a93cafc9f5f45107eda78e4d6b19f8649f99 (diff)
downloadxine-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.c16
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;