libbinder_ndk: avoid need to allocate heap status
Only allocate this once globally, since it is expected to be used on
almost every NDK-backend binder transaction.
Fixes: 167686803
Test: CtsNdkBinderTestCases
Change-Id: I1d2c5ca05a1ee6ceb5b41966e441aa51c1c315af
diff --git a/libs/binder/ndk/status.cpp b/libs/binder/ndk/status.cpp
index d889593..b2b141e 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) {