zip_writer.cc: update powerof2 and use it unconditionally

Update the powerof2 macro to one that is integer overflow safe.
This definition is the same one used by bionic, but cleaned up using
clang_format.

Unconditionally use this powerof2 macro, to ensure consistency across
all the build environments.

Test: compiles and boots
Change-Id: I21bfaf2360d1f77caf96365e20490b1deadfdfe0
This commit is contained in:
Nick Kralevich 2019-03-27 07:46:39 -07:00
parent 29d2b05194
commit 6d3c80b85a
1 changed files with 7 additions and 3 deletions

View File

@ -30,9 +30,13 @@
#include "entry_name_utils-inl.h"
#include "zip_archive_common.h"
#if !defined(powerof2)
#define powerof2(x) ((((x)-1) & (x)) == 0)
#endif
#undef powerof2
#define powerof2(x) \
({ \
__typeof__(x) _x = (x); \
__typeof__(x) _x2; \
__builtin_add_overflow(_x, -1, &_x2) ? 1 : ((_x2 & _x) == 0); \
})
/* Zip compression methods we support */
enum {