]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
PPC: Fix string.sub() range check.
authorMike Pall <mike>
Sun, 7 Oct 2012 15:12:28 +0000 (17:12 +0200)
committerMike Pall <mike>
Sun, 7 Oct 2012 15:12:28 +0000 (17:12 +0200)
src/vm_ppc.dasc

index 7eafebe1592e6e7b4fd7f1af74913586504e2d5e..5a6737aea6fddbcc5e097bddea77522622d79a2d 100644 (file)
@@ -2100,10 +2100,10 @@ static void build_subroutines(BuildCtx *ctx)
   |  b ->fff_newstr
   |
   |5:  // Negative end or overflow.
-  |  sub CARG2, TMP0, TMP2
-  |  srawi CARG2, CARG2, 31
-  |  andc TMP3, TMP3, CARG2            // end = end > len ? len : end+len+1
-  |  add TMP2, TMP0, TMP3
+  |  cmpw TMP0, TMP2                   // len >= end? (signed compare)
+  |   add TMP2, TMP0, TMP3             // Negative end: end = end+len+1.
+  |  bge <2
+  |   mr TMP2, TMP0                    // Overflow: end = len.
   |  b <2
   |
   |7:  // Negative start or underflow.