blob: dcbdd897d1f3b4799bedd4fc994e9813634c5dbf [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
var o = new Array();
var a = new Object();
// Generate getter that will return a constructed string
function propString(i)
{
return function() { var ret = "a" + i; return ret; };
}
function init(o, a)
{
for (var i = 0; i < 21; i++)
{
// Create a replacer array that doesn't hold the string reference by using a getter to create
// the string.
Object.defineProperty(o, i, { get: propString(i) } );
// Initialize the object to be stringify
a["a" + i] = i;
}
}
init(o,a);
WScript.Echo(JSON.stringify(a,o));
// Bug 30349 - invalid replacer array element after valid element causes crash regardless of input
WScript.Echo(JSON.stringify(true, [new Number(1.5), true])); // Original repro
WScript.Echo(JSON.stringify(false, [new Number(1.5), true]));
WScript.Echo(JSON.stringify(null, [new Number(1.5), true]));
// Valid input should just ignore any bad replacer array elements
WScript.Echo(JSON.stringify(a, [false, "a0", true, "a10", false]));