aboutsummaryrefslogtreecommitdiff
path: root/libs/gst/base/gsttypefindhelper.c
diff options
context:
space:
mode:
Diffstat (limited to 'libs/gst/base/gsttypefindhelper.c')
-rw-r--r--libs/gst/base/gsttypefindhelper.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/libs/gst/base/gsttypefindhelper.c b/libs/gst/base/gsttypefindhelper.c
index febf682..f98764b 100644
--- a/libs/gst/base/gsttypefindhelper.c
+++ b/libs/gst/base/gsttypefindhelper.c
@@ -176,7 +176,12 @@ helper_find_peek (gpointer data, gint64 offset, guint size)
}
bmap = g_slice_new0 (GstMappedBuffer);
+
+ if (!gst_buffer_map (buffer, &bmap->map, GST_MAP_READ))
+ goto map_failed;
+
bmap->buffer = buffer;
+
if (insert_pos) {
helper->buffers = g_slist_insert_before (helper->buffers, insert_pos, bmap);
} else {
@@ -187,8 +192,6 @@ helper_find_peek (gpointer data, gint64 offset, guint size)
helper->buffers = g_slist_prepend (helper->buffers, bmap);
}
- gst_buffer_map (buffer, &bmap->map, GST_MAP_READ);
-
return bmap->map.data;
error:
@@ -196,6 +199,13 @@ error:
GST_INFO ("typefind function returned: %s", gst_flow_get_name (ret));
return NULL;
}
+map_failed:
+ {
+ GST_ERROR ("map failed");
+ gst_buffer_unref (buffer);
+ g_slice_free (GstMappedBuffer, bmap);
+ return NULL;
+ }
}
/*