blob: e0bfd9fc3aeab219df785be80b1ad3dbce27dc91 [file] [log] [blame]
description(
"Tests what happens when you do a out-of-bounds access on a string and use that to install a getter that clobbers a structure."
);
function foo(s, o) {
var x = o.f;
s[42];
var y = o.g;
return x + y;
}
noInline(foo);
silentTestPass = true;
var theObject = {};
var didGetCalled = false;
String.prototype.__defineGetter__("42", function() { didGetCalled = true; delete theObject.g; theObject.h = 42 });
while (testRunner.numberOfDFGCompiles(foo) < 1) {
didGetCalled = false;
shouldBe("foo(\"hello\", {f:1, g:2})", "3");
shouldBe("didGetCalled", "true");
}
theObject = {f:1, g:2};
didGetCalled = false;
shouldBe("foo(\"hello\", theObject)", "0/0");
shouldBe("didGetCalled", "true");