From 71c3c41c66fb90660c791760edc2d52dac054367 Mon Sep 17 00:00:00 2001 From: Tal Shalif Date: Sat, 5 Jul 2008 18:57:30 +0000 Subject: [PATCH] ext/dvdnav/dvdnavsrc.c: Prevent double free. Fixes bug #541697. Original commit message from CVS: Patch by: Tal Shalif * ext/dvdnav/dvdnavsrc.c: (gst_dvd_nav_src_stop): Prevent double free. Fixes bug #541697. --- ChangeLog | 7 +++++++ ext/dvdnav/dvdnavsrc.c | 11 ++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index acd900cd10..3b0d3e94ff 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-07-05 Sebastian Dröge + + Patch by: Tal Shalif + + * ext/dvdnav/dvdnavsrc.c: (gst_dvd_nav_src_stop): + Prevent double free. Fixes bug #541697. + 2008-07-05 Mark Nauwelaerts * gst/mpegstream/gstdvddemux.c: (gst_dvd_demux_base_init), diff --git a/ext/dvdnav/dvdnavsrc.c b/ext/dvdnav/dvdnavsrc.c index c9b1ed8d4e..635cabeeb8 100644 --- a/ext/dvdnav/dvdnavsrc.c +++ b/ext/dvdnav/dvdnavsrc.c @@ -620,8 +620,8 @@ gst_dvd_nav_src_update_tmaps (GstDvdNavSrc * src) int tmap_length; tmap_length = - (src->title_tmap->map_ent[src->title_tmap-> - nr_of_entries] & 0x7fffffff); + (src->title_tmap->map_ent[src-> + title_tmap->nr_of_entries] & 0x7fffffff); if (tmap_length >= dvdnav_length) { GST_LOG_OBJECT (src, "Using time maps for seeking"); } else { @@ -1682,8 +1682,7 @@ gst_dvd_nav_src_process_next_block (GstDvdNavSrc * src, GstBuffer ** p_buf) GST_DVD_NAV_SRC_PAUSE_INTERVAL); GstClock *system_clock = gst_system_clock_obtain (); GstClockTime cur_time = gst_clock_get_internal_time (system_clock); - GstClockID id = - gst_clock_new_single_shot_id (system_clock, + GstClockID id = gst_clock_new_single_shot_id (system_clock, cur_time + GST_DVD_NAV_SRC_PAUSE_INTERVAL); gst_clock_id_wait (id, NULL); gst_clock_id_unref (id); @@ -2067,8 +2066,10 @@ gst_dvd_nav_src_stop (GstBaseSrc * basesrc) } /* Close old vts file if opened */ - if (src->vts_file) + if (src->vts_file) { ifoClose (src->vts_file); + src->vts_file = NULL; + } /* Close the video manager */ ifoClose (src->vmg_file);