diff options
author | android-build-prod (mdb) <android-build-team-robot@google.com> | 2018-04-28 01:05:14 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2018-04-28 01:05:14 +0000 |
commit | 3260678523ab0b68336b607905a748395685c6e9 (patch) | |
tree | cddac30f8f4713a6ef40ce4e22385157fef99d58 | |
parent | a96b39fe93685c25de3364f112bd3befe33c30c1 (diff) | |
parent | 156465e14e5f3caac3255f00fe74a7ef520fd17a (diff) | |
download | libbcc-3260678523ab0b68336b607905a748395685c6e9.tar.gz |
Merge "Fix a memory leak"android-wear-p-preview-2android-p-preview-5android-p-preview-4android-p-preview-3android-p-preview-2android-o-mr1-iot-release-1.0.2android-o-mr1-iot-release-1.0.1android-o-mr1-iot-release-1.0.0android-n-iot-release-smart-display-r2android-n-iot-release-smart-displayandroid-n-iot-release-polk-at1
-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; } |