From: Edward Hervey Date: Mon, 4 Sep 2017 15:06:39 +0000 (+0200) Subject: dcaparse: Really fix "usage before unmap" X-Git-Tag: 1.19.3~509^2~1903 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5bc5e07531e2496eab68fbfeab73b4d95f1709d3;p=platform%2Fupstream%2Fgstreamer.git dcaparse: Really fix "usage before unmap" Previous patch would try to unref a buffer that was pushed downstream. Instead only unref when/if needed and keep usage of the cleanup: goto block --- diff --git a/gst/audioparsers/gstdcaparse.c b/gst/audioparsers/gstdcaparse.c index a31f9d3..1ea40ac 100644 --- a/gst/audioparsers/gstdcaparse.c +++ b/gst/audioparsers/gstdcaparse.c @@ -446,6 +446,7 @@ gst_dca_parse_handle_frame (GstBaseParse * parse, gst_base_parse_set_frame_rate (parse, rate, block_size, 0, 0); } +cleanup: /* it is possible that DTS HD substream after DTS core */ if (parse->flags & GST_BASE_PARSE_FLAG_DRAINING || map.size >= size + 9) { extra_size = 0; @@ -469,18 +470,16 @@ gst_dca_parse_handle_frame (GstBaseParse * parse, } } } + gst_buffer_unmap (buf, &map); if (ret == GST_FLOW_OK && size + extra_size <= map.size) { ret = gst_base_parse_finish_frame (parse, frame, size + extra_size); } else { ret = GST_FLOW_OK; } } else { - ret = GST_FLOW_OK; + gst_buffer_unmap (buf, &map); } -cleanup: - gst_buffer_unmap (buf, &map); - return ret; }