зеркало из https://github.com/mozilla/gecko-dev.git
Bug 752205 - Ensure switch case strings are atoms (r=njn)
--HG-- extra : rebase_source : e91d6c4d5c078e9ae16e7d3bd80e082a564dee57
This commit is contained in:
Родитель
e7bbc2f3f4
Коммит
2c857745c6
|
@ -2468,6 +2468,14 @@ EmitSwitch(JSContext *cx, BytecodeEmitter *bce, ParseNode *pn)
|
||||||
switchOp = JSOP_CONDSWITCH;
|
switchOp = JSOP_CONDSWITCH;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (constVal.isString()) {
|
||||||
|
JSAtom *atom = js_AtomizeString(cx, constVal.toString());
|
||||||
|
if (!atom) {
|
||||||
|
ok = JS_FALSE;
|
||||||
|
goto release;
|
||||||
|
}
|
||||||
|
constVal.setString(atom);
|
||||||
|
}
|
||||||
constPropagated = JS_TRUE;
|
constPropagated = JS_TRUE;
|
||||||
break;
|
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);
|
Загрузка…
Ссылка в новой задаче