matroskademux: Avoid division by zero assert in gst_matroska_demux_search_pos
authorPer x Johansson <perxjoh@axis.com>
Thu, 24 Oct 2013 11:16:42 +0000 (13:16 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Mon, 11 Nov 2013 10:30:54 +0000 (11:30 +0100)
https://bugzilla.gnome.org/show_bug.cgi?id=711829

gst/matroska/matroska-demux.c

index 6359f1f..6afe8b8 100644 (file)
@@ -1872,12 +1872,17 @@ retry:
       GST_TIME_FORMAT, opos, GST_TIME_ARGS (otime),
       GST_TIME_ARGS (otime - demux->stream_start_time),
       GST_TIME_ARGS (demux->stream_start_time), GST_TIME_ARGS (time));
-  newpos =
-      gst_util_uint64_scale (opos - demux->common.ebml_segment_start,
-      time - demux->stream_start_time,
-      otime - demux->stream_start_time) - chunk;
-  if (newpos < 0)
+
+  if (otime <= demux->stream_start_time) {
     newpos = 0;
+  } else {
+    newpos =
+        gst_util_uint64_scale (opos - demux->common.ebml_segment_start,
+        time - demux->stream_start_time,
+        otime - demux->stream_start_time) - chunk;
+    if (newpos < 0)
+      newpos = 0;
+  }
   /* favour undershoot */
   newpos = newpos * 90 / 100;
   newpos += demux->common.ebml_segment_start;