diff --git a/src/options.cpp b/src/options.cpp index 49ee6193..69bd5599 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -88,14 +88,26 @@ void Options::reset() noexcept { **************************************************************************/ TEST_CASE("Options::reset") { +#define opt DO_NOT_USE_opt COMPILE_TIME_ASSERT(std::is_standard_layout::value) COMPILE_TIME_ASSERT(std::is_nothrow_default_constructible::value) COMPILE_TIME_ASSERT(std::is_trivially_copyable::value) Options local_options; - Options *o = &local_options; + Options *const o = &local_options; o->reset(); CHECK(o->o_unix.osabi0 == 3); + // + static_assert(TABLESIZE(o->win32_pe.compress_rt) == 25); // 25 == RT_LAST + CHECK(o->win32_pe.compress_exports); + CHECK(o->win32_pe.compress_icons); + CHECK(o->win32_pe.strip_relocs); + // issue 728 + CHECK(o->win32_pe.compress_resources); + for (size_t i = 0; i < 24; i++) + CHECK(o->win32_pe.compress_rt[i]); + CHECK(!o->win32_pe.compress_rt[24]); // 24 == RT_MANIFEST +#undef opt } template diff --git a/src/options.h b/src/options.h index c93b611b..c0e2d606 100644 --- a/src/options.h +++ b/src/options.h @@ -170,8 +170,8 @@ struct Options final { struct { int compress_exports; int compress_icons; - upx::TriBool compress_resources; - upx::TriBool compress_rt[25]; // 25 == RT_LAST + upx::TriBool compress_resources; + upx::TriBool compress_rt[25]; // 25 == RT_LAST int strip_relocs; const char *keep_resource; } win32_pe;