From 2b77da35bc77e2d34062d9168884095d9145a993 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Sun, 20 Nov 2016 23:32:17 +0100 Subject: [PATCH] ARM64: Reject special case in emit_isk13(). --- src/lj_emit_arm64.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lj_emit_arm64.h b/src/lj_emit_arm64.h index eb8f7fc7..52e75559 100644 --- a/src/lj_emit_arm64.h +++ b/src/lj_emit_arm64.h @@ -46,7 +46,9 @@ static uint32_t emit_isk13(uint64_t n, int is64) if (!n) return 0; /* Neither all-zero nor all-ones are allowed. */ do { /* Find the repeat width. */ if (is64 && (uint32_t)(n^(n>>32))) break; - n = (uint32_t)n; w = 32; if ((n^(n>>16)) & 0xffff) break; + n = (uint32_t)n; + if (!n) return 0; /* Ditto when passing n=0xffffffff and is64=0. */ + w = 32; if ((n^(n>>16)) & 0xffff) break; n = n & 0xffff; w = 16; if ((n^(n>>8)) & 0xff) break; n = n & 0xff; w = 8; if ((n^(n>>4)) & 0xf) break; n = n & 0xf; w = 4; if ((n^(n>>2)) & 0x3) break;