gst/: Handle negative offsets better. Fixes decodebin.
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>
Mon, 9 May 2005 15:54:26 +0000 (15:54 +0000)
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>
Mon, 9 May 2005 15:54:26 +0000 (15:54 +0000)
Original commit message from CVS:
* gst/base/gsttypefindhelper.c: (helper_find_peek):
* gst/elements/gsttypefindelement.c: (find_peek):
Handle negative offsets better. Fixes decodebin.

ChangeLog
gst/base/gsttypefindhelper.c
gst/elements/gsttypefindelement.c
libs/gst/base/gsttypefindhelper.c
plugins/elements/gsttypefindelement.c

index b284660..7ad1b03 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-05-09  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/base/gsttypefindhelper.c: (helper_find_peek):
+       * gst/elements/gsttypefindelement.c: (find_peek):
+         Handle negative offsets better. Fixes decodebin.
+
 2005-05-09  Wim Taymans  <wim@fluendo.com>
 
        * gst/base/gstbasetransform.c: (gst_base_transform_proxy_getcaps),
index f080539..ecb6f9d 100644 (file)
@@ -57,7 +57,7 @@ helper_find_peek (gpointer data, gint64 offset, guint size)
   src = find->src;
 
   if (offset < 0) {
-    if (find->size == -1)
+    if (find->size == -1 || find->size < -offset)
       return NULL;
 
     offset += find->size;
index 5aeece8..7d424a2 100644 (file)
@@ -572,7 +572,7 @@ find_peek (gpointer data, gint64 offset, guint size)
     /* FIXME: can we do this easily without querying length? */
     guint64 length = find_element_get_length (data);
 
-    if (length == 0) {
+    if (length < -offset) {
       buf = NULL;
     } else {
       buf =
index f080539..ecb6f9d 100644 (file)
@@ -57,7 +57,7 @@ helper_find_peek (gpointer data, gint64 offset, guint size)
   src = find->src;
 
   if (offset < 0) {
-    if (find->size == -1)
+    if (find->size == -1 || find->size < -offset)
       return NULL;
 
     offset += find->size;
index 5aeece8..7d424a2 100644 (file)
@@ -572,7 +572,7 @@ find_peek (gpointer data, gint64 offset, guint size)
     /* FIXME: can we do this easily without querying length? */
     guint64 length = find_element_get_length (data);
 
-    if (length == 0) {
+    if (length < -offset) {
       buf = NULL;
     } else {
       buf =