Skip to content

Commit fc45b80

Browse files
dbatyaigalpeter
authored andcommitted
Fix Array.prototype.toLocaleString() when toLocaleString returns non-string.
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai dbatyai.u-szeged@partner.samsung.com
1 parent b110070 commit fc45b80

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

jerry-core/ecma/builtin-objects/ecma-builtin-helpers.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,15 @@ ecma_builtin_helper_get_to_locale_string_at_index (ecma_object_t *obj_p, /** < t
154154
if (ecma_op_is_callable (to_locale_value))
155155
{
156156
ecma_object_t *locale_func_obj_p = ecma_get_object_from_value (to_locale_value);
157-
ret_value = ecma_op_function_call (locale_func_obj_p,
158-
ecma_make_object_value (index_obj_p),
159-
NULL,
160-
0);
157+
ECMA_TRY_CATCH (call_value,
158+
ecma_op_function_call (locale_func_obj_p,
159+
ecma_make_object_value (index_obj_p),
160+
NULL,
161+
0),
162+
ret_value);
163+
ret_value = ecma_op_to_string (call_value);
164+
ECMA_FINALIZE (call_value);
165+
161166
}
162167
else
163168
{

tests/jerry/array-prototype-tolocalestring.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ var test_ok = {
2626
assert ([3, test_ok, 4, test_ok].toLocaleString() === "3,1,4,1");
2727

2828

29+
var obj = { toLocaleString: function() {} };
30+
var test_non_str_locale = [undefined, obj, null, obj, obj];
31+
32+
assert(test_non_str_locale.toLocaleString() === ",undefined,,undefined,undefined");
33+
2934
var test_fail = {
3035
toLocaleString: "FAIL"
3136
};

0 commit comments

Comments
 (0)