| /* |
| * Any copyright is dedicated to the Public Domain. |
| * http://creativecommons.org/licenses/publicdomain/ |
| */ |
| |
| var BUGNUMBER = 805121; |
| var summary = "Be more careful with string math to avoid wrong results"; |
| |
| print(BUGNUMBER + ": " + summary); |
| |
| /******************************************************************************/ |
| |
| function puff(x, n) |
| { |
| while(x.length < n) |
| x += x; |
| return x.substring(0, n); |
| } |
| |
| var x = puff("1", 1 << 20); |
| var rep = puff("$1", 1 << 16); |
| |
| try |
| { |
| var y = x.replace(/(.+)/g, rep); |
| assertEq(y.length, Math.pow(2, 36)); |
| } |
| catch (e) |
| { |
| // OOM also acceptable |
| } |
| |
| /******************************************************************************/ |
| |
| if (typeof reportCompare === "function") |
| reportCompare(true, true); |
| |
| print("Tests complete"); |