mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 906040 - Bring back the higher recursion limit for chrome scripts in the interpreter. r=luke
This commit is contained in:
parent
64a0f16900
commit
e672f24d6d
@ -1,4 +1,6 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
* vim: set ts=8 sts=4 et sw=4 tw=99:
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
@ -77,7 +79,11 @@ BEGIN_TEST(testChromeBuffer)
|
||||
const char *bytes = "try { "
|
||||
" return untrusted(trusted); "
|
||||
"} catch (e) { "
|
||||
" try { "
|
||||
" return trusted(100); "
|
||||
" } catch(e) { "
|
||||
" return -1; "
|
||||
" } "
|
||||
"} ";
|
||||
CHECK(fun = JS_CompileFunction(cx, global, "untrusted", 1, ¶mName,
|
||||
bytes, strlen(bytes), "", 0));
|
||||
|
@ -228,7 +228,10 @@ InterpreterStack::purge(JSRuntime *rt)
|
||||
uint8_t *
|
||||
InterpreterStack::allocateFrame(JSContext *cx, size_t size)
|
||||
{
|
||||
if (JS_UNLIKELY(frameCount_ >= MAX_FRAMES)) {
|
||||
size_t maxFrames = cx->compartment()->principals == cx->runtime()->trustedPrincipals()
|
||||
? MAX_FRAMES_TRUSTED
|
||||
: MAX_FRAMES;
|
||||
if (JS_UNLIKELY(frameCount_ >= maxFrames)) {
|
||||
js_ReportOverRecursed(cx);
|
||||
return NULL;
|
||||
}
|
||||
|
@ -1040,6 +1040,7 @@ class InterpreterStack
|
||||
|
||||
// Number of interpreter frames on the stack, for over-recursion checks.
|
||||
static const size_t MAX_FRAMES = 50 * 1000;
|
||||
static const size_t MAX_FRAMES_TRUSTED = MAX_FRAMES + 1000;
|
||||
size_t frameCount_;
|
||||
|
||||
inline uint8_t *allocateFrame(JSContext *cx, size_t size);
|
||||
|
Loading…
Reference in New Issue
Block a user