gst/typefind/gsttypefindfunctions.c: Don't modify scan context when we return FALSE...
authorTim-Philipp Müller <tim@centricular.net>
Mon, 19 May 2008 14:09:08 +0000 (14:09 +0000)
committerTim-Philipp Müller <tim@centricular.net>
Mon, 19 May 2008 14:09:08 +0000 (14:09 +0000)
Original commit message from CVS:
* gst/typefind/gsttypefindfunctions.c: (data_scan_ctx_ensure_data),
(mpeg_sys_is_valid_pack):
Don't modify scan context when we return FALSE in ensure_data, so
it's possible to continue scanning, and we don't end up with a NULL
data pointer and a positive size, which might bite us the next time
we're called. Small constification.

ChangeLog
common
gst/typefind/gsttypefindfunctions.c

index 45567e9bfff2d4530808aee86355fb9e19d7bea1..3807f6f1ecc1d7c71693dff1f6a6cac3e9d04729 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2008-05-19  Tim-Philipp Müller  <tim.muller at collabora co uk>
+
+       * gst/typefind/gsttypefindfunctions.c: (data_scan_ctx_ensure_data),
+         (mpeg_sys_is_valid_pack):
+         Don't modify scan context when we return FALSE in ensure_data, so
+         it's possible to continue scanning, and we don't end up with a NULL
+         data pointer and a positive size, which might bite us the next time
+         we're called. Small constification.
+
 2008-05-16  Sebastian Dröge  <slomo@circular-chaos.org>
 
        * gst/adder/gstadder.c:
diff --git a/common b/common
index 3b3631082d04b426f450810e8836de94e9c5d60a..e365978c480a8fffa4bdb61568fb2cd989d1b197 160000 (submodule)
--- a/common
+++ b/common
@@ -1 +1 @@
-Subproject commit 3b3631082d04b426f450810e8836de94e9c5d60a
+Subproject commit e365978c480a8fffa4bdb61568fb2cd989d1b197
index bccaac06e2d16551722b1c549c990a5ad272ec5b..d9eae0ecef1fc09a8dcc08d85c8938da2b46f675 100644 (file)
@@ -45,7 +45,7 @@ GST_DEBUG_CATEGORY_STATIC (type_find_debug);
 typedef struct
 {
   guint64 offset;
-  guint8 *data;
+  const guint8 *data;
   gint size;
 } DataScanCtx;
 
@@ -65,13 +65,15 @@ data_scan_ctx_advance (GstTypeFind * tf, DataScanCtx * c, guint bytes_to_skip)
 static inline gboolean
 data_scan_ctx_ensure_data (GstTypeFind * tf, DataScanCtx * c, gint min_len)
 {
+  const guint8 *data;
   guint64 len;
 
   if (G_LIKELY (c->size >= min_len))
     return TRUE;
 
-  c->data = gst_type_find_peek (tf, c->offset, DATA_SCAN_CTX_CHUNK_SIZE);
-  if (G_LIKELY (c->data != NULL)) {
+  data = gst_type_find_peek (tf, c->offset, DATA_SCAN_CTX_CHUNK_SIZE);
+  if (G_LIKELY (data != NULL)) {
+    c->data = data;
     c->size = DATA_SCAN_CTX_CHUNK_SIZE;
     return TRUE;
   }
@@ -86,8 +88,9 @@ data_scan_ctx_ensure_data (GstTypeFind * tf, DataScanCtx * c, gint min_len)
     len = min_len;
   }
 
-  c->data = gst_type_find_peek (tf, c->offset, len);
-  if (c->data != NULL) {
+  data = gst_type_find_peek (tf, c->offset, len);
+  if (data != NULL) {
+    c->data = data;
     c->size = len;
     return TRUE;
   }
@@ -1241,7 +1244,7 @@ static GstStaticCaps mpeg_sys_caps = GST_STATIC_CAPS ("video/mpeg, "
 #define MPEG2_MAX_SYS_HEADERS 5
 
 static gboolean
-mpeg_sys_is_valid_pack (GstTypeFind * tf, guint8 * data, guint len,
+mpeg_sys_is_valid_pack (GstTypeFind * tf, const guint8 * data, guint len,
     guint * pack_size)
 {
   /* Check the pack header @ offset for validity, assuming that the 4 byte header