diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/interp.cc | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/src/interp.cc b/src/interp.cc index c835b770..dfe2a983 100644 --- a/src/interp.cc +++ b/src/interp.cc @@ -641,8 +641,7 @@ Result Thread::GetAtomicAccessAddress(const uint8_t** pc, void** out_address) { uint64_t addr = static_cast<uint64_t>(Pop<uint32_t>()) + ReadU32(pc); TRAP_IF(addr + sizeof(MemType) > memory->data.size(), MemoryAccessOutOfBounds); - uint32_t addr_align = addr != 0 ? (1 << wabt_ctz_u32(addr)) : UINT32_MAX; - TRAP_IF(addr_align < sizeof(MemType), AtomicMemoryAccessUnaligned); + TRAP_IF((addr & (sizeof(MemType) - 1)) != 0, AtomicMemoryAccessUnaligned); *out_address = memory->data.data() + static_cast<IstreamOffset>(addr); return Result::Ok; } |