From 5b9c84091d5b4a609812748f144d555ad7ba0265 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Mon, 9 May 2005 15:54:26 +0000 Subject: [PATCH] gst/: Handle negative offsets better. Fixes decodebin. 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 | 6 ++++++ gst/base/gsttypefindhelper.c | 2 +- gst/elements/gsttypefindelement.c | 2 +- libs/gst/base/gsttypefindhelper.c | 2 +- plugins/elements/gsttypefindelement.c | 2 +- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index b284660..7ad1b03 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-05-09 Ronald S. Bultje + + * gst/base/gsttypefindhelper.c: (helper_find_peek): + * gst/elements/gsttypefindelement.c: (find_peek): + Handle negative offsets better. Fixes decodebin. + 2005-05-09 Wim Taymans * gst/base/gstbasetransform.c: (gst_base_transform_proxy_getcaps), diff --git a/gst/base/gsttypefindhelper.c b/gst/base/gsttypefindhelper.c index f080539..ecb6f9d 100644 --- a/gst/base/gsttypefindhelper.c +++ b/gst/base/gsttypefindhelper.c @@ -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; diff --git a/gst/elements/gsttypefindelement.c b/gst/elements/gsttypefindelement.c index 5aeece8..7d424a2 100644 --- a/gst/elements/gsttypefindelement.c +++ b/gst/elements/gsttypefindelement.c @@ -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 = diff --git a/libs/gst/base/gsttypefindhelper.c b/libs/gst/base/gsttypefindhelper.c index f080539..ecb6f9d 100644 --- a/libs/gst/base/gsttypefindhelper.c +++ b/libs/gst/base/gsttypefindhelper.c @@ -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; diff --git a/plugins/elements/gsttypefindelement.c b/plugins/elements/gsttypefindelement.c index 5aeece8..7d424a2 100644 --- a/plugins/elements/gsttypefindelement.c +++ b/plugins/elements/gsttypefindelement.c @@ -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 = -- 2.7.4