mirror of https://github.com/tc39/test262.git
Add replacer stack overflow test
This commit is contained in:
parent
d2b5f63a15
commit
2255a0ff11
|
@ -0,0 +1,35 @@
|
||||||
|
// Copyright (C) 2020 Alexey Shvayka. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
/*---
|
||||||
|
esid: sec-json.stringify
|
||||||
|
description: >
|
||||||
|
Stack overflow due to infinite recursion in replacer throws an expected error.
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var getStackOverflowError = function() {
|
||||||
|
try {
|
||||||
|
return getStackOverflowError();
|
||||||
|
} catch (err) {
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var StackOverflowError = getStackOverflowError().constructor;
|
||||||
|
|
||||||
|
var obj = {};
|
||||||
|
var objReplacer = function() {
|
||||||
|
return {key: obj};
|
||||||
|
};
|
||||||
|
|
||||||
|
assert.throws(StackOverflowError, function() {
|
||||||
|
JSON.stringify(null, objReplacer);
|
||||||
|
});
|
||||||
|
|
||||||
|
var arr = [];
|
||||||
|
var arrReplacer = function() {
|
||||||
|
return [arr];
|
||||||
|
};
|
||||||
|
|
||||||
|
assert.throws(StackOverflowError, function() {
|
||||||
|
JSON.stringify(null, arrReplacer);
|
||||||
|
});
|
Loading…
Reference in New Issue