diff options
author | android-build-prod (mdb) <android-build-team-robot@google.com> | 2018-04-27 18:19:18 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-04-27 18:19:18 -0700 |
commit | c14da8b46cc800e444452e7c09365ad4d312aed4 (patch) | |
tree | cddac30f8f4713a6ef40ce4e22385157fef99d58 | |
parent | 5973926ba36e2406dcfff87cb8fd36550f8355e3 (diff) | |
parent | 7e316c05c63e57bd8232b3c5ff3a44281c97c855 (diff) | |
download | libbcc-master-cuttlefish-testing-release.tar.gz |
Merge "Fix a memory leak" am: 3260678523android-o-mr1-iot-release-smart-display-r3android-o-mr1-iot-release-1.0.5android-o-mr1-iot-release-1.0.4android-o-mr1-iot-release-1.0.3oreo-mr1-1.2-iot-releasemaster-cuttlefish-testing-release
am: 7e316c05c6
Change-Id: Ic85922afaa66b946aa609d9d32ddc9ef72d64cda
-rw-r--r-- | bcinfo/MetadataExtractor.cpp | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/bcinfo/MetadataExtractor.cpp b/bcinfo/MetadataExtractor.cpp index 78d94e5..439d121 100644 --- a/bcinfo/MetadataExtractor.cpp +++ b/bcinfo/MetadataExtractor.cpp @@ -290,9 +290,7 @@ bool MetadataExtractor::populateObjectSlotMetadata( return true; } - uint32_t *TmpSlotList = new uint32_t[mObjectSlotCount]; - memset(TmpSlotList, 0, mObjectSlotCount * sizeof(*TmpSlotList)); - + std::unique_ptr<uint32_t[]> TmpSlotList(new uint32_t[mObjectSlotCount]()); for (size_t i = 0; i < mObjectSlotCount; i++) { llvm::MDNode *ObjectSlot = ObjectSlotMetadata->getOperand(i); if (ObjectSlot != nullptr && ObjectSlot->getNumOperands() == 1) { @@ -306,8 +304,8 @@ bool MetadataExtractor::populateObjectSlotMetadata( } } - mObjectSlotList = TmpSlotList; - + delete [] mObjectSlotList; + mObjectSlotList = TmpSlotList.release(); return true; } @@ -441,9 +439,9 @@ bool MetadataExtractor::populateForEachMetadata( return true; } - uint32_t *TmpSigList = new uint32_t[mExportForEachSignatureCount]; - const char **TmpNameList = new const char*[mExportForEachSignatureCount]; - uint32_t *TmpInputCountList = new uint32_t[mExportForEachSignatureCount]; + std::unique_ptr<uint32_t[]> TmpSigList(new uint32_t[mExportForEachSignatureCount]); + std::unique_ptr<const char *[]> TmpNameList(new const char*[mExportForEachSignatureCount]); + std::unique_ptr<uint32_t[]> TmpInputCountList(new uint32_t[mExportForEachSignatureCount]); for (size_t i = 0; i < mExportForEachSignatureCount; i++) { llvm::MDNode *SigNode = Signatures->getOperand(i); @@ -489,9 +487,14 @@ bool MetadataExtractor::populateForEachMetadata( TmpNameList[0] = RootName; } - mExportForEachNameList = TmpNameList; - mExportForEachSignatureList = TmpSigList; - mExportForEachInputCountList = TmpInputCountList; + delete [] mExportForEachNameList; + mExportForEachNameList = TmpNameList.release(); + + delete [] mExportForEachSignatureList; + mExportForEachSignatureList = TmpSigList.release(); + + delete [] mExportForEachInputCountList; + mExportForEachInputCountList = TmpInputCountList.release(); return true; } |