Bug 752205 - Ensure switch case strings are atoms (r=njn)

--HG--
extra : rebase_source : e91d6c4d5c078e9ae16e7d3bd80e082a564dee57
This commit is contained in:
Luke Wagner 2012-05-07 08:36:59 -07:00
Родитель e7bbc2f3f4
Коммит 2c857745c6
2 изменённых файлов: 14 добавлений и 0 удалений

Просмотреть файл

@ -2468,6 +2468,14 @@ EmitSwitch(JSContext *cx, BytecodeEmitter *bce, ParseNode *pn)
switchOp = JSOP_CONDSWITCH;
continue;
}
if (constVal.isString()) {
JSAtom *atom = js_AtomizeString(cx, constVal.toString());
if (!atom) {
ok = JS_FALSE;
goto release;
}
constVal.setString(atom);
}
constPropagated = JS_TRUE;
break;
}

Просмотреть файл

@ -0,0 +1,6 @@
var x = "one";
var y = "two";
const a = x + y;
var hit = false;
eval('switch("onetwo") { case a: hit = true; };');
assertEq(hit, true);