commit | 1a27d7f55760a571566c931eae72a4610b91aa15 | [log] [tgz] |
---|---|---|
author | Steven Moreland <smoreland@google.com> | Fri Sep 25 19:17:56 2020 +0000 |
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | Fri Sep 25 19:17:56 2020 +0000 |
tree | 1a60d59271dd46cf5a23b2b5a1598dd0f67ef7e5 | |
parent | acca8f720e067287cf7be8452af325c9fcc54bca [diff] | |
parent | 623a229a0cfe856aef0cb5a451aa3bb75a43cae5 [diff] |
Merge "libbinder_ndk: avoid need to allocate heap status" am: 9b1e10db73 am: 2133bd5454 am: 7a07f2fe76 am: 623a229a0c Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1434715 Change-Id: I223106e580d508b9009e30b0232b51a9ea522206
diff --git a/libs/binder/ndk/include_cpp/android/binder_auto_utils.h b/libs/binder/ndk/include_cpp/android/binder_auto_utils.h index f59bb75..439b019 100644 --- a/libs/binder/ndk/include_cpp/android/binder_auto_utils.h +++ b/libs/binder/ndk/include_cpp/android/binder_auto_utils.h
@@ -199,6 +199,9 @@ public: /** * Takes ownership of a. + * + * WARNING: this constructor is only expected to be used when reading a + * status value. Use `ScopedAStatus::ok()` instead. */ explicit ScopedAStatus(AStatus* a = nullptr) : ScopedAResource(a) {} ~ScopedAStatus() {}
diff --git a/libs/binder/ndk/status.cpp b/libs/binder/ndk/status.cpp index 4fd59a2..a8ae441 100644 --- a/libs/binder/ndk/status.cpp +++ b/libs/binder/ndk/status.cpp
@@ -23,7 +23,8 @@ using ::android::binder::Status; AStatus* AStatus_newOk() { - return new AStatus(); + static AStatus status = AStatus(); + return &status; } AStatus* AStatus_fromExceptionCode(binder_exception_t exception) { @@ -78,7 +79,9 @@ } void AStatus_delete(AStatus* status) { - delete status; + if (status != AStatus_newOk()) { + delete status; + } } binder_status_t PruneStatusT(status_t status) {