Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
2 function a() {
3 return "a";
4 }
5 function b() {
6 return "b";
7 }
8 function c() {
9 return "c";
10 }
11 var names = ["a","b","c"];
13 function foo(name) {
14 return eval(name + "()");
15 }
17 for (var i = 0; i < names.length; i++)
18 assertEq(foo(names[i]), names[i]);
20 // Test bailout due to bad name passed to eval.
21 try {
22 foo("missing");
23 } catch (e) {
24 assertEq(/missing/.test(e), true);
25 }
27 function bar(name) {
28 return eval(name + "()");
29 }
31 for (var i = 0; i < names.length; i++)
32 assertEq(bar(names[i]), names[i]);
34 function recursion() {
35 return bar({ valueOf: function() { return "gotcha"; }});
36 }
38 function gotcha() {
39 return "gotcha";
40 }
42 // Test invalidation within call made after name lookup.
43 assertEq(bar("recursion"), "gotcha");