Loading libs/binder/ndk/Android.bp +2 −0 Original line number Original line Diff line number Diff line Loading @@ -23,6 +23,8 @@ cc_library { "include_apex", "include_apex", ], ], cflags: ["-Wall", "-Wextra", "-Werror"], srcs: [ srcs: [ "ibinder.cpp", "ibinder.cpp", "ibinder_jni.cpp", "ibinder_jni.cpp", Loading libs/binder/ndk/include_ndk/android/binder_parcel.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -149,7 +149,7 @@ typedef bool (*AParcel_stringArrayElementAllocator)(void* arrayData, size_t inde * not required to be null-terminated. If the object at index is null, then this should be null. * not required to be null-terminated. If the object at index is null, then this should be null. */ */ typedef const char* (*AParcel_stringArrayElementGetter)(const void* arrayData, size_t index, typedef const char* (*AParcel_stringArrayElementGetter)(const void* arrayData, size_t index, size_t* outLength); int32_t* outLength); /** /** * This is called to allocate an array of size 'length'. If length is -1, then a 'null' array (or * This is called to allocate an array of size 'length'. If length is -1, then a 'null' array (or Loading libs/binder/ndk/include_ndk/android/binder_parcel_utils.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -299,7 +299,7 @@ static inline bool AParcel_stdVectorStringElementAllocator(void* vectorData, siz * index. * index. */ */ static inline const char* AParcel_stdVectorStringElementGetter(const void* vectorData, size_t index, static inline const char* AParcel_stdVectorStringElementGetter(const void* vectorData, size_t index, size_t* outLength) { int32_t* outLength) { const std::vector<std::string>* vec = static_cast<const std::vector<std::string>*>(vectorData); const std::vector<std::string>* vec = static_cast<const std::vector<std::string>*>(vectorData); const std::string& element = vec->at(index); const std::string& element = vec->at(index); Loading Loading @@ -327,7 +327,7 @@ static inline bool AParcel_nullableStdVectorStringElementAllocator(void* vectorD */ */ static inline const char* AParcel_nullableStdVectorStringElementGetter(const void* vectorData, static inline const char* AParcel_nullableStdVectorStringElementGetter(const void* vectorData, size_t index, size_t index, size_t* outLength) { int32_t* outLength) { const std::optional<std::vector<std::optional<std::string>>>* vec = const std::optional<std::vector<std::optional<std::string>>>* vec = static_cast<const std::optional<std::vector<std::optional<std::string>>>*>(vectorData); static_cast<const std::optional<std::vector<std::optional<std::string>>>*>(vectorData); const std::optional<std::string>& element = vec->value().at(index); const std::optional<std::string>& element = vec->value().at(index); Loading libs/binder/ndk/parcel.cpp +7 −7 Original line number Original line Diff line number Diff line Loading @@ -173,7 +173,7 @@ binder_status_t WriteArray(AParcel* parcel, const void* arrayData, int32_t lengt Parcel* rawParcel = parcel->get(); Parcel* rawParcel = parcel->get(); for (size_t i = 0; i < length; i++) { for (int32_t i = 0; i < length; i++) { status = (rawParcel->*write)(getter(arrayData, i)); status = (rawParcel->*write)(getter(arrayData, i)); if (status != STATUS_OK) return PruneStatusT(status); if (status != STATUS_OK) return PruneStatusT(status); Loading @@ -197,7 +197,7 @@ binder_status_t ReadArray(const AParcel* parcel, void* arrayData, ArrayAllocator if (length <= 0) return STATUS_OK; if (length <= 0) return STATUS_OK; for (size_t i = 0; i < length; i++) { for (int32_t i = 0; i < length; i++) { T readTarget; T readTarget; status = (rawParcel->*read)(&readTarget); status = (rawParcel->*read)(&readTarget); if (status != STATUS_OK) return PruneStatusT(status); if (status != STATUS_OK) return PruneStatusT(status); Loading Loading @@ -376,8 +376,8 @@ binder_status_t AParcel_writeStringArray(AParcel* parcel, const void* arrayData, if (status != STATUS_OK) return status; if (status != STATUS_OK) return status; if (length <= 0) return STATUS_OK; if (length <= 0) return STATUS_OK; for (size_t i = 0; i < length; i++) { for (int32_t i = 0; i < length; i++) { size_t elementLength = 0; int32_t elementLength = 0; const char* str = getter(arrayData, i, &elementLength); const char* str = getter(arrayData, i, &elementLength); if (str == nullptr && elementLength != -1) return STATUS_BAD_VALUE; if (str == nullptr && elementLength != -1) return STATUS_BAD_VALUE; Loading @@ -392,7 +392,7 @@ binder_status_t AParcel_writeStringArray(AParcel* parcel, const void* arrayData, // allocator. // allocator. struct StringArrayElementAllocationAdapter { struct StringArrayElementAllocationAdapter { void* arrayData; // stringData from the NDK void* arrayData; // stringData from the NDK size_t index; // index into the string array int32_t index; // index into the string array AParcel_stringArrayElementAllocator elementAllocator; AParcel_stringArrayElementAllocator elementAllocator; static bool Allocator(void* stringData, int32_t length, char** buffer) { static bool Allocator(void* stringData, int32_t length, char** buffer) { Loading Loading @@ -441,7 +441,7 @@ binder_status_t AParcel_writeParcelableArray(AParcel* parcel, const void* arrayD if (status != STATUS_OK) return status; if (status != STATUS_OK) return status; if (length <= 0) return STATUS_OK; if (length <= 0) return STATUS_OK; for (size_t i = 0; i < length; i++) { for (int32_t i = 0; i < length; i++) { binder_status_t status = elementWriter(parcel, arrayData, i); binder_status_t status = elementWriter(parcel, arrayData, i); if (status != STATUS_OK) return status; if (status != STATUS_OK) return status; } } Loading @@ -464,7 +464,7 @@ binder_status_t AParcel_readParcelableArray(const AParcel* parcel, void* arrayDa if (length == -1) return STATUS_OK; // null array if (length == -1) return STATUS_OK; // null array for (size_t i = 0; i < length; i++) { for (int32_t i = 0; i < length; i++) { binder_status_t status = elementReader(parcel, arrayData, i); binder_status_t status = elementReader(parcel, arrayData, i); if (status != STATUS_OK) return status; if (status != STATUS_OK) return status; } } Loading Loading
libs/binder/ndk/Android.bp +2 −0 Original line number Original line Diff line number Diff line Loading @@ -23,6 +23,8 @@ cc_library { "include_apex", "include_apex", ], ], cflags: ["-Wall", "-Wextra", "-Werror"], srcs: [ srcs: [ "ibinder.cpp", "ibinder.cpp", "ibinder_jni.cpp", "ibinder_jni.cpp", Loading
libs/binder/ndk/include_ndk/android/binder_parcel.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -149,7 +149,7 @@ typedef bool (*AParcel_stringArrayElementAllocator)(void* arrayData, size_t inde * not required to be null-terminated. If the object at index is null, then this should be null. * not required to be null-terminated. If the object at index is null, then this should be null. */ */ typedef const char* (*AParcel_stringArrayElementGetter)(const void* arrayData, size_t index, typedef const char* (*AParcel_stringArrayElementGetter)(const void* arrayData, size_t index, size_t* outLength); int32_t* outLength); /** /** * This is called to allocate an array of size 'length'. If length is -1, then a 'null' array (or * This is called to allocate an array of size 'length'. If length is -1, then a 'null' array (or Loading
libs/binder/ndk/include_ndk/android/binder_parcel_utils.h +2 −2 Original line number Original line Diff line number Diff line Loading @@ -299,7 +299,7 @@ static inline bool AParcel_stdVectorStringElementAllocator(void* vectorData, siz * index. * index. */ */ static inline const char* AParcel_stdVectorStringElementGetter(const void* vectorData, size_t index, static inline const char* AParcel_stdVectorStringElementGetter(const void* vectorData, size_t index, size_t* outLength) { int32_t* outLength) { const std::vector<std::string>* vec = static_cast<const std::vector<std::string>*>(vectorData); const std::vector<std::string>* vec = static_cast<const std::vector<std::string>*>(vectorData); const std::string& element = vec->at(index); const std::string& element = vec->at(index); Loading Loading @@ -327,7 +327,7 @@ static inline bool AParcel_nullableStdVectorStringElementAllocator(void* vectorD */ */ static inline const char* AParcel_nullableStdVectorStringElementGetter(const void* vectorData, static inline const char* AParcel_nullableStdVectorStringElementGetter(const void* vectorData, size_t index, size_t index, size_t* outLength) { int32_t* outLength) { const std::optional<std::vector<std::optional<std::string>>>* vec = const std::optional<std::vector<std::optional<std::string>>>* vec = static_cast<const std::optional<std::vector<std::optional<std::string>>>*>(vectorData); static_cast<const std::optional<std::vector<std::optional<std::string>>>*>(vectorData); const std::optional<std::string>& element = vec->value().at(index); const std::optional<std::string>& element = vec->value().at(index); Loading
libs/binder/ndk/parcel.cpp +7 −7 Original line number Original line Diff line number Diff line Loading @@ -173,7 +173,7 @@ binder_status_t WriteArray(AParcel* parcel, const void* arrayData, int32_t lengt Parcel* rawParcel = parcel->get(); Parcel* rawParcel = parcel->get(); for (size_t i = 0; i < length; i++) { for (int32_t i = 0; i < length; i++) { status = (rawParcel->*write)(getter(arrayData, i)); status = (rawParcel->*write)(getter(arrayData, i)); if (status != STATUS_OK) return PruneStatusT(status); if (status != STATUS_OK) return PruneStatusT(status); Loading @@ -197,7 +197,7 @@ binder_status_t ReadArray(const AParcel* parcel, void* arrayData, ArrayAllocator if (length <= 0) return STATUS_OK; if (length <= 0) return STATUS_OK; for (size_t i = 0; i < length; i++) { for (int32_t i = 0; i < length; i++) { T readTarget; T readTarget; status = (rawParcel->*read)(&readTarget); status = (rawParcel->*read)(&readTarget); if (status != STATUS_OK) return PruneStatusT(status); if (status != STATUS_OK) return PruneStatusT(status); Loading Loading @@ -376,8 +376,8 @@ binder_status_t AParcel_writeStringArray(AParcel* parcel, const void* arrayData, if (status != STATUS_OK) return status; if (status != STATUS_OK) return status; if (length <= 0) return STATUS_OK; if (length <= 0) return STATUS_OK; for (size_t i = 0; i < length; i++) { for (int32_t i = 0; i < length; i++) { size_t elementLength = 0; int32_t elementLength = 0; const char* str = getter(arrayData, i, &elementLength); const char* str = getter(arrayData, i, &elementLength); if (str == nullptr && elementLength != -1) return STATUS_BAD_VALUE; if (str == nullptr && elementLength != -1) return STATUS_BAD_VALUE; Loading @@ -392,7 +392,7 @@ binder_status_t AParcel_writeStringArray(AParcel* parcel, const void* arrayData, // allocator. // allocator. struct StringArrayElementAllocationAdapter { struct StringArrayElementAllocationAdapter { void* arrayData; // stringData from the NDK void* arrayData; // stringData from the NDK size_t index; // index into the string array int32_t index; // index into the string array AParcel_stringArrayElementAllocator elementAllocator; AParcel_stringArrayElementAllocator elementAllocator; static bool Allocator(void* stringData, int32_t length, char** buffer) { static bool Allocator(void* stringData, int32_t length, char** buffer) { Loading Loading @@ -441,7 +441,7 @@ binder_status_t AParcel_writeParcelableArray(AParcel* parcel, const void* arrayD if (status != STATUS_OK) return status; if (status != STATUS_OK) return status; if (length <= 0) return STATUS_OK; if (length <= 0) return STATUS_OK; for (size_t i = 0; i < length; i++) { for (int32_t i = 0; i < length; i++) { binder_status_t status = elementWriter(parcel, arrayData, i); binder_status_t status = elementWriter(parcel, arrayData, i); if (status != STATUS_OK) return status; if (status != STATUS_OK) return status; } } Loading @@ -464,7 +464,7 @@ binder_status_t AParcel_readParcelableArray(const AParcel* parcel, void* arrayDa if (length == -1) return STATUS_OK; // null array if (length == -1) return STATUS_OK; // null array for (size_t i = 0; i < length; i++) { for (int32_t i = 0; i < length; i++) { binder_status_t status = elementReader(parcel, arrayData, i); binder_status_t status = elementReader(parcel, arrayData, i); if (status != STATUS_OK) return status; if (status != STATUS_OK) return status; } } Loading