@@ -99,7 +99,7 @@ struct ArenaAlignDefault {
9999 }
100100
101101 static inline PROTOBUF_ALWAYS_INLINE constexpr size_t Ceil (size_t n) {
102- return (n + align - 1 ) & - align;
102+ return (n + align - 1 ) & ~( align - 1 ) ;
103103 }
104104 static inline PROTOBUF_ALWAYS_INLINE constexpr size_t Floor (size_t n) {
105105 return (n & ~(align - 1 ));
@@ -113,7 +113,7 @@ struct ArenaAlignDefault {
113113 template <typename T>
114114 static inline PROTOBUF_ALWAYS_INLINE T* Ceil (T* ptr) {
115115 uintptr_t intptr = reinterpret_cast <uintptr_t >(ptr);
116- return reinterpret_cast <T*>((intptr + align - 1 ) & - align);
116+ return reinterpret_cast <T*>((intptr + align - 1 ) & ~( align - 1 ) );
117117 }
118118
119119 template <typename T>
@@ -142,7 +142,9 @@ struct ArenaAlign {
142142 return (reinterpret_cast <uintptr_t >(ptr) & (align - 1 )) == 0U ;
143143 }
144144
145- constexpr size_t Ceil (size_t n) const { return (n + align - 1 ) & -align; }
145+ constexpr size_t Ceil (size_t n) const {
146+ return (n + align - 1 ) & ~(align - 1 );
147+ }
146148 constexpr size_t Floor (size_t n) const { return (n & ~(align - 1 )); }
147149
148150 constexpr size_t Padded (size_t n) const {
@@ -156,7 +158,7 @@ struct ArenaAlign {
156158 template <typename T>
157159 T* Ceil (T* ptr) const {
158160 uintptr_t intptr = reinterpret_cast <uintptr_t >(ptr);
159- return reinterpret_cast <T*>((intptr + align - 1 ) & - align);
161+ return reinterpret_cast <T*>((intptr + align - 1 ) & ~( align - 1 ) );
160162 }
161163
162164 template <typename T>
0 commit comments