зеркало из https://github.com/mozilla/gecko-dev.git
Bug 840012 - Handle OOM in CreateThisForFunction (r=hannes)
--HG-- extra : rebase_source : 0a4cf9d0eb6373ff61f21dd386c103854236e0d1
This commit is contained in:
Родитель
040af911d4
Коммит
3603e99ba3
|
@ -531,7 +531,10 @@ CreateThis(JSContext *cx, HandleObject callee, MutableHandleValue rval)
|
||||||
JSScript *script = fun->getOrCreateScript(cx);
|
JSScript *script = fun->getOrCreateScript(cx);
|
||||||
if (!script || !script->ensureHasTypes(cx))
|
if (!script || !script->ensureHasTypes(cx))
|
||||||
return false;
|
return false;
|
||||||
rval.set(ObjectValue(*CreateThisForFunction(cx, callee, false)));
|
JSObject *thisObj = CreateThisForFunction(cx, callee, false);
|
||||||
|
if (!thisObj)
|
||||||
|
return false;
|
||||||
|
rval.set(ObjectValue(*thisObj));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
// |jit-test| error:out of memory
|
||||||
|
|
||||||
|
gcPreserveCode();
|
||||||
|
evaluate("gcparam(\"maxBytes\", gcparam(\"gcBytes\") + 4*1024);");
|
||||||
|
evaluate("\
|
||||||
|
function testDontEnum(F) { \
|
||||||
|
function test() {\
|
||||||
|
typeof (new test(\"1\")) != 'function'\
|
||||||
|
}\
|
||||||
|
test();\
|
||||||
|
} \
|
||||||
|
var list = [];\
|
||||||
|
for (i in list)\
|
||||||
|
var F = this[list[i]];\
|
||||||
|
actual = testDontEnum(F);\
|
||||||
|
");
|
|
@ -1043,7 +1043,10 @@ Evaluate(JSContext *cx, unsigned argc, jsval *vp)
|
||||||
}
|
}
|
||||||
if (!JS_ExecuteScript(cx, global, script, vp)) {
|
if (!JS_ExecuteScript(cx, global, script, vp)) {
|
||||||
if (catchTermination && !JS_IsExceptionPending(cx)) {
|
if (catchTermination && !JS_IsExceptionPending(cx)) {
|
||||||
args.rval().setString(JS_NewStringCopyZ(cx, "terminated"));
|
JSString *str = JS_NewStringCopyZ(cx, "terminated");
|
||||||
|
if (!str)
|
||||||
|
return false;
|
||||||
|
args.rval().setString(str);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче