diff options
Diffstat (limited to 'libs/kdbinder/kdbus/iterable.cpp')
-rw-r--r-- | libs/kdbinder/kdbus/iterable.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/libs/kdbinder/kdbus/iterable.cpp b/libs/kdbinder/kdbus/iterable.cpp index d45221a..b7093ec 100644 --- a/libs/kdbinder/kdbus/iterable.cpp +++ b/libs/kdbinder/kdbus/iterable.cpp @@ -19,9 +19,15 @@ namespace android { namespace kdbus { -void for_each_name_info(struct kdbus_name_list *list, - std::function<void(struct kdbus_name_info *)> f) { - for_each(list->names, list, f); +void for_each_info(struct kdbus_info *list, uint64_t size, + std::function<void(struct kdbus_info *)> f) { + struct kdbus_info *info = list; + while (reinterpret_cast<uint8_t *>(info) + < reinterpret_cast<uint8_t *>(list) + size) { + f(info); + info = reinterpret_cast<struct kdbus_info *>( + reinterpret_cast<uint8_t *>(info) + kAlignTo8Bit(info->size)); + } } } // namespace kdbus |