From 75b7bf70de4093eacdb1d59738deae2d7cca4a3b Mon Sep 17 00:00:00 2001 From: Nick Desaulniers Date: Mon, 7 Oct 2019 20:19:39 -0700 Subject: [media][sfplugin] fix -Wdangling-gsl C2BufferData#linearBlocks() returns a std::vector. Chaining method calls results in an immediate dereference of a dangling pointer. Save a reference to the otherwise temporary for the duration of the function call. Bug: 142544793 Test: m, flash device Change-Id: I99d662a8fe5deec652cdcd82f420c836c76d5539 Signed-off-by: Nick Desaulniers --- media/codec2/sfplugin/CCodecBuffers.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/media/codec2/sfplugin/CCodecBuffers.cpp b/media/codec2/sfplugin/CCodecBuffers.cpp index 26c702ddc0..ed8b832478 100644 --- a/media/codec2/sfplugin/CCodecBuffers.cpp +++ b/media/codec2/sfplugin/CCodecBuffers.cpp @@ -878,9 +878,10 @@ void OutputBuffersArray::realloc(const std::shared_ptr &c2buffer) { switch (c2buffer->data().type()) { case C2BufferData::LINEAR: { uint32_t size = kLinearBufferSize; - const C2ConstLinearBlock &block = c2buffer->data().linearBlocks().front(); - if (block.size() < kMaxLinearBufferSize / 2) { - size = block.size() * 2; + const std::vector &linear_blocks = c2buffer->data().linearBlocks(); + const uint32_t block_size = linear_blocks.front().size(); + if (block_size < kMaxLinearBufferSize / 2) { + size = block_size * 2; } else { size = kMaxLinearBufferSize; } -- cgit v1.2.3