]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
x86/x64: Fix instruction length decoder.
authorMike Pall <mike>
Fri, 6 May 2016 10:08:00 +0000 (12:08 +0200)
committerMike Pall <mike>
Fri, 6 May 2016 10:08:00 +0000 (12:08 +0200)
Thanks to Peter Cawley.

src/lj_asm_x86.h

index 86a5b0a8efbe61e6c4290f4d2392ef7e6e74b685..02918e23d3628452a0cefa5395709931d146e234 100644 (file)
@@ -2836,9 +2836,9 @@ static uint32_t asm_x86_inslen(const uint8_t* p)
     case 4: result -= (prefixes & 2);  /* fallthrough */
     case 5: return result + (x & 15);
     case 6:  /* Group 3. */
-      if (p[1] & 0x38) return result + 2;
-      if ((prefixes & 2) && (x == 0x66)) return result + 4;
-      return result + (x & 15);
+      if (p[1] & 0x38) x = 2;
+      else if ((prefixes & 2) && (x == 0x66)) x = 4;
+      goto mrm;
     case 7: /* VEX c4/c5. */
       if (LJ_32 && p[1] < 0xc0) {
        x = 2;