diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2021-04-13 08:32:34 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-04-13 08:32:34 +0000 |
commit | c047af24ff8a9e43f67e0b156b4ec5da8a60bb50 (patch) | |
tree | 0f46578bbb54fc987b42ee705266be45834d8ded | |
parent | 539efb33b7addbd589de9f11f04b205923cff341 (diff) | |
parent | 7ecc69ca3602a2db9ac9d2610f93421910c5de99 (diff) | |
download | ril-c047af24ff8a9e43f67e0b156b4ec5da8a60bb50.tar.gz |
Merge "Remove local dynamic array" am: 33dda50e8a am: ff7fde0faf am: 7ecc69ca36
Original change: https://android-review.googlesource.com/c/platform/hardware/ril/+/1666339
Change-Id: I5e54e21bcd411b93f9190bd74a017ff72f114eea
-rwxr-xr-x | libril/ril_service.cpp | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/libril/ril_service.cpp b/libril/ril_service.cpp index 123f3e2..77c2e61 100755 --- a/libril/ril_service.cpp +++ b/libril/ril_service.cpp @@ -1798,17 +1798,21 @@ Return<void> RadioImpl::setGsmBroadcastConfig(int32_t serial, return Void(); } - int num = configInfo.size(); + uint32_t num = configInfo.size(); if (num > MAX_BROADCAST_SMS_CONFIG_INFO) { RLOGE("setGsmBroadcastConfig: Invalid configInfo length %s", requestToString(pRI->pCI->requestNumber)); sendErrorResponse(pRI, RIL_E_INVALID_ARGUMENTS); return Void(); } - RIL_GSM_BroadcastSmsConfigInfo gsmBci[num]; - RIL_GSM_BroadcastSmsConfigInfo *gsmBciPtrs[num]; + auto gsmBci = new RIL_GSM_BroadcastSmsConfigInfo[num]; + if (gsmBci == nullptr) { + sendErrorResponse(pRI, RIL_E_NO_MEMORY); + return Void(); + } + std::vector<RIL_GSM_BroadcastSmsConfigInfo*> gsmBciPtrs(num); - for (int i = 0 ; i < num ; i++ ) { + for (uint32_t i = 0 ; i < num ; i++ ) { gsmBciPtrs[i] = &gsmBci[i]; gsmBci[i].fromServiceId = configInfo[i].fromServiceId; gsmBci[i].toServiceId = configInfo[i].toServiceId; @@ -1817,8 +1821,10 @@ Return<void> RadioImpl::setGsmBroadcastConfig(int32_t serial, gsmBci[i].selected = BOOL_TO_INT(configInfo[i].selected); } - CALL_ONREQUEST(pRI->pCI->requestNumber, gsmBciPtrs, + CALL_ONREQUEST(pRI->pCI->requestNumber, gsmBciPtrs.data(), num * sizeof(RIL_GSM_BroadcastSmsConfigInfo *), pRI, mSlotId); + + delete []gsmBci; return Void(); } @@ -1851,25 +1857,30 @@ Return<void> RadioImpl::setCdmaBroadcastConfig(int32_t serial, return Void(); } - int num = configInfo.size(); + uint32_t num = configInfo.size(); if (num > MAX_BROADCAST_SMS_CONFIG_INFO) { RLOGE("setCdmaBroadcastConfig: Invalid configInfo length %s", requestToString(pRI->pCI->requestNumber)); sendErrorResponse(pRI, RIL_E_INVALID_ARGUMENTS); return Void(); } - RIL_CDMA_BroadcastSmsConfigInfo cdmaBci[num]; - RIL_CDMA_BroadcastSmsConfigInfo *cdmaBciPtrs[num]; - - for (int i = 0 ; i < num ; i++ ) { + auto cdmaBci = new RIL_CDMA_BroadcastSmsConfigInfo[num]; + if (cdmaBci == nullptr) { + sendErrorResponse(pRI, RIL_E_NO_MEMORY); + return Void(); + } + std::vector<RIL_CDMA_BroadcastSmsConfigInfo*> cdmaBciPtrs(num); + for (uint32_t i = 0 ; i < num ; i++ ) { cdmaBciPtrs[i] = &cdmaBci[i]; cdmaBci[i].service_category = configInfo[i].serviceCategory; cdmaBci[i].language = configInfo[i].language; cdmaBci[i].selected = BOOL_TO_INT(configInfo[i].selected); } - CALL_ONREQUEST(pRI->pCI->requestNumber, cdmaBciPtrs, + CALL_ONREQUEST(pRI->pCI->requestNumber, cdmaBciPtrs.data(), num * sizeof(RIL_CDMA_BroadcastSmsConfigInfo *), pRI, mSlotId); + + delete []cdmaBci; return Void(); } |