Limit the call stack size for native/builtin functions as well (#2935)

VM_RECURSION_LIMIT only prevented the recursion of interpreted codeblocks but
native/builtin function calls can also create stack overflow due to the too deep recursion.

This patch fixes #2905.

Co-authored-by: Gabor Loki loki@inf.u-szeged.hu
JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik frobert@inf.u-szeged.hu
This commit is contained in:
Robert Fancsik
2019-07-05 12:21:48 +02:00
committed by GitHub
parent 8766bb3b37
commit e902b870aa
10 changed files with 100 additions and 54 deletions
+29
View File
@@ -0,0 +1,29 @@
/* Copyright JS Foundation and other contributors, http://js.foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var func = function () {
foo.prototype = new Array(1, 2, 3);
function foo() {}
var f = new foo();
f.length = f;
try {
var a = "Using f will give an error: " + f;
assert(false);
} catch (e) {
assert(e instanceof RangeError);
}
};
func();
+2 -2
View File
@@ -13,7 +13,7 @@
// limitations under the License.
/* Note: if the tests suite vm-recursion-limit changes, this variable must be changed as well */
var limit = 1000;
var limit = 100;
var counter = 0;
function f () {
@@ -26,5 +26,5 @@ try {
assert (false);
} catch (e) {
assert (e instanceof RangeError);
assert (counter === (limit - 1));
assert (counter === limit);
}