summaryrefslogtreecommitdiffstats
path: root/libutils/include/utils/Flattenable.h
diff options
context:
space:
mode:
authorMichael Bestas <mkbestas@lineageos.org>2020-01-08 02:03:31 +0200
committerMichael Bestas <mkbestas@lineageos.org>2020-01-08 02:03:31 +0200
commitd686176a931e3ef28c820109bd2cedad7c504d14 (patch)
tree5f73aa8f659e7ef58c27dffe5223b74374971648 /libutils/include/utils/Flattenable.h
parent6b664ff0596b91553e64aae1f79f338c4fc3d051 (diff)
parenteaab99db0bfea48dd507fb4be705c136568d001a (diff)
downloadsystem_core-d686176a931e3ef28c820109bd2cedad7c504d14.tar.gz
system_core-d686176a931e3ef28c820109bd2cedad7c504d14.tar.bz2
system_core-d686176a931e3ef28c820109bd2cedad7c504d14.zip
Merge tag 'android-10.0.0_r23' into staging/lineage-17.1_merge-android-10.0.0_r23
Android 10.0.0 release 23 * tag 'android-10.0.0_r23': FlattenableUtils::align memsets Change-Id: I4042ad902074d4cc8c5953cfe27f8bb34fdbdb01
Diffstat (limited to 'libutils/include/utils/Flattenable.h')
-rw-r--r--libutils/include/utils/Flattenable.h7
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) {