[automerger skipped] Merge "Remove projects being moved into from system/core into system/memory" am: f7a6c4587f
am: d9d3cb4a3e -s ours
am skip reason: change_id I98793edd10954058448727635f101219f71d3ccf with SHA1 dc58e3b9c0 is in history
Change-Id: I7fb8e3b3a77a20f1c70667a7cdb98bc4815bfe57
diff --git a/libutils/include/utils/Flattenable.h b/libutils/include/utils/Flattenable.h
index 953b859..17c5e10 100644
--- a/libutils/include/utils/Flattenable.h
+++ b/libutils/include/utils/Flattenable.h
@@ -52,7 +52,12 @@
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) {