diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2019-11-15 06:16:04 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2019-11-15 06:16:04 +0000 |
commit | 380b775282d63adbdc0f3135694df68cbec2eef7 (patch) | |
tree | 3009c6e673e423dcc11109897f7f26c11ce8c966 | |
parent | f0db8d044bbd06e824450e6673bacd8131a3c1f8 (diff) | |
parent | b5d3e902ffbc45af58d665c45e12e83ceb599de5 (diff) | |
download | core-android10-qpr1-release.tar.gz |
Merge cherrypicks of [9736358, 9736296, 9735406, 9736235, 9736059, 9736060, 9736236, 9736297, 9736298, 9735210, 9735309] into qt-qpr1-releaseandroid-10.0.0_r26android-10.0.0_r22android-10.0.0_r21android10-qpr1-release
Change-Id: I4c199d94d6500c361b00d1d13ece63a1e90b7350
-rw-r--r-- | libutils/include/utils/Flattenable.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/libutils/include/utils/Flattenable.h b/libutils/include/utils/Flattenable.h index 9d006023d..2c4b8075d 100644 --- a/libutils/include/utils/Flattenable.h +++ b/libutils/include/utils/Flattenable.h @@ -47,7 +47,12 @@ public: template<size_t N> static size_t align(void*& buffer) { - return align<N>( const_cast<void const*&>(buffer) ); + static_assert(!(N & (N - 1)), "Can only align to a power of 2."); + void* b = buffer; + buffer = reinterpret_cast<void*>((uintptr_t(buffer) + (N-1)) & ~(N-1)); + size_t delta = size_t(uintptr_t(buffer) - uintptr_t(b)); + memset(b, 0, delta); + return delta; } static void advance(void*& buffer, size_t& size, size_t offset) { |