From 8094957e09a43e0dcbaebf36d01b48922119b2c4 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Fri, 26 Apr 2019 20:40:42 +0200 Subject: [PATCH] Fix gst_buffer_unref assertion in chromaprinter --- src/musicbrainz/chromaprinter.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/musicbrainz/chromaprinter.cpp b/src/musicbrainz/chromaprinter.cpp index c7ad99e2e..2f474c50e 100644 --- a/src/musicbrainz/chromaprinter.cpp +++ b/src/musicbrainz/chromaprinter.cpp @@ -204,12 +204,16 @@ GstFlowReturn Chromaprinter::NewBufferCallback(GstAppSink* app_sink, Chromaprinter* me = reinterpret_cast(self); GstSample* sample = gst_app_sink_pull_sample(app_sink); + if (!sample) return GST_FLOW_ERROR; GstBuffer* buffer = gst_sample_get_buffer(sample); - GstMapInfo map; - gst_buffer_map(buffer, &map, GST_MAP_READ); - me->buffer_.write(reinterpret_cast(map.data), map.size); - gst_buffer_unmap(buffer, &map); - gst_buffer_unref(buffer); + if (buffer) { + GstMapInfo map; + if (gst_buffer_map(buffer, &map, GST_MAP_READ)) { + me->buffer_.write(reinterpret_cast(map.data), map.size); + gst_buffer_unmap(buffer, &map); + } + } + gst_sample_unref(sample); return GST_FLOW_OK; }