diff options
author | Nick Desaulniers <ndesaulniers@google.com> | 2019-10-07 20:19:39 -0700 |
---|---|---|
committer | Bryan Ferris <bferris@google.com> | 2020-02-27 21:55:55 +0000 |
commit | 75b7bf70de4093eacdb1d59738deae2d7cca4a3b (patch) | |
tree | be1553f07e4782a3402be006ffceb7b540435935 | |
parent | 58cc8f2c0254f03d66a28ae1cf0809c171d4ac7d (diff) | |
download | frameworks_av-75b7bf70de4093eacdb1d59738deae2d7cca4a3b.tar.gz frameworks_av-75b7bf70de4093eacdb1d59738deae2d7cca4a3b.tar.bz2 frameworks_av-75b7bf70de4093eacdb1d59738deae2d7cca4a3b.zip |
[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 <ndesaulniers@google.com>
-rw-r--r-- | media/codec2/sfplugin/CCodecBuffers.cpp | 7 |
1 files 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> &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<C2ConstLinearBlock> &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; } |