AC4Parser: Avoid memory leak
Our 'presentation_name' was allocated, but never deleted.
Instead of creating a temporary char array, we directly
use std::string to build up this name, and avoid the leak.
Test: Treehugger
Change-Id: Ie3baf602d24edffe2408a77e0fae714e6a8e8baf
diff --git a/media/extractors/mp4/AC4Parser.cpp b/media/extractors/mp4/AC4Parser.cpp
index 167d474..a95c2db 100644
--- a/media/extractors/mp4/AC4Parser.cpp
+++ b/media/extractors/mp4/AC4Parser.cpp
@@ -577,14 +577,14 @@
BYTE_ALIGN;
CHECK_BITS_LEFT(16);
uint32_t name_len = mBitReader.getBits(16);
- char* presentation_name = new char[name_len+1];
CHECK_BITS_LEFT(name_len * 8);
+ std::string &presentation_name =
+ mPresentations[presentation].mDescription;
+ presentation_name.clear();
+ presentation_name.resize(name_len);
for (uint32_t i = 0; i < name_len; i++) {
presentation_name[i] = (char)(mBitReader.getBits(8));
}
- presentation_name[name_len] = '\0';
- std::string description(presentation_name, name_len);
- mPresentations[presentation].mDescription = description;
CHECK_BITS_LEFT(5);
uint32_t n_targets = mBitReader.getBits(5);
CHECK_BITS_LEFT(n_targets * (3 + 8));