Files
jerryscript/tests/jerry/es.next/regression-test-issue-4148.js
T
Péter Gál f2ff0d082f Correctly release values in TypedArray's toLocaleString (#4156)
When the `toLocaleString` was called on a TypedArray's value
the resulting object's `toString/valueOf` invocations could
create errors. These error values were not released.

In addition the input element value for the toString operation
was released twice in case of an error.

Fixes: #4148.

JerryScript-DCO-1.0-Signed-off-by: Peter Gal pgal.usz@partner.samsung.com
2020-08-24 14:50:18 +02:00

44 lines
1.1 KiB
JavaScript

// 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 calls = 0;
Number.prototype.toLocaleString = function() {
return {
toString: function() {
calls++;
if (calls > 1) {
throw "ERROR V";
}
}
};
};
var array = [42.333333, 2.3];
var sampleA = new Float32Array(array);
try {
sampleA.toLocaleString();
} catch(ex) {
assert(ex === "ERROR V");
}
assert(calls === 2);
var sampleB = new Uint8Array(array);
try {
sampleB.toLocaleString();
} catch(ex) {
assert(ex === "ERROR V");
}
assert(calls === 3);