libbinder_ndk: AIBinder_Weak_delete sets nullptr
So that it is very friendly and forgiving.
Bug: 111445392
Test: ./ndk/runtests.sh
Change-Id: Ib0fdf48e96fe59fe3338d317f92b873cff4c23a4
diff --git a/libs/binder/ndk/AIBinder.cpp b/libs/binder/ndk/AIBinder.cpp
index f452511..58cbf56 100644
--- a/libs/binder/ndk/AIBinder.cpp
+++ b/libs/binder/ndk/AIBinder.cpp
@@ -135,14 +135,25 @@
wp<AIBinder> binder;
};
AIBinder_Weak* AIBinder_Weak_new(AIBinder* binder) {
- if (binder == nullptr) return nullptr;
+ if (binder == nullptr) {
+ return nullptr;
+ }
+
return new AIBinder_Weak{wp<AIBinder>(binder)};
}
-void AIBinder_Weak_delete(AIBinder_Weak* weakBinder) {
- delete weakBinder;
+void AIBinder_Weak_delete(AIBinder_Weak** weakBinder) {
+ if (weakBinder == nullptr) {
+ return;
+ }
+
+ delete *weakBinder;
+ *weakBinder = nullptr;
}
AIBinder* AIBinder_Weak_promote(AIBinder_Weak* weakBinder) {
- if (weakBinder == nullptr) return nullptr;
+ if (weakBinder == nullptr) {
+ return nullptr;
+ }
+
sp<AIBinder> binder = weakBinder->binder.promote();
AIBinder_incStrong(binder.get());
return binder.get();