@@ -107,16 +107,20 @@ ABinderRpc_AccessorProvider* ABinderRpc_registerAccessorProvider(
107107 ABinderRpc_AccessorProvider_getAccessorCallback provider,
108108 const char * const * const instances, size_t numInstances, void * data,
109109 ABinderRpc_AccessorProviderUserData_deleteCallback onDelete) {
110- if (provider == nullptr ) {
111- ALOGE (" Null provider passed to ABinderRpc_registerAccessorProvider" );
112- return nullptr ;
113- }
114110 if (data && onDelete == nullptr ) {
115111 ALOGE (" If a non-null data ptr is passed to ABinderRpc_registerAccessorProvider, then a "
116112 " ABinderRpc_AccessorProviderUserData_deleteCallback must also be passed to delete "
117113 " the data object once the ABinderRpc_AccessorProvider is removed." );
118114 return nullptr ;
119115 }
116+ // call the onDelete when the last reference of this goes away (when the
117+ // last reference to the generate std::function goes away).
118+ std::shared_ptr<OnDeleteProviderHolder> onDeleteHolder =
119+ std::make_shared<OnDeleteProviderHolder>(data, onDelete);
120+ if (provider == nullptr ) {
121+ ALOGE (" Null provider passed to ABinderRpc_registerAccessorProvider" );
122+ return nullptr ;
123+ }
120124 if (numInstances == 0 || instances == nullptr ) {
121125 ALOGE (" No instances passed to ABinderRpc_registerAccessorProvider. numInstances: %zu" ,
122126 numInstances);
@@ -126,10 +130,6 @@ ABinderRpc_AccessorProvider* ABinderRpc_registerAccessorProvider(
126130 for (size_t i = 0 ; i < numInstances; i++) {
127131 instanceStrings.emplace (instances[i]);
128132 }
129- // call the onDelete when the last reference of this goes away (when the
130- // last reference to the generate std::function goes away).
131- std::shared_ptr<OnDeleteProviderHolder> onDeleteHolder =
132- std::make_shared<OnDeleteProviderHolder>(data, onDelete);
133133 android::RpcAccessorProvider generate = [provider,
134134 onDeleteHolder](const String16& name) -> sp<IBinder> {
135135 ABinderRpc_Accessor* accessor = provider (String8 (name).c_str (), onDeleteHolder->mData );
0 commit comments