diff options
author | Csaba Repasi <repasics@inf.u-szeged.hu> | 2021-12-10 18:15:00 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-10 18:15:00 +0100 |
commit | 42523bd6e2b114755498c9f68fd78545f9b33476 (patch) | |
tree | c6d5391225a7009e79ecf0be1551a837f0759cf9 | |
parent | 4cbc77d70958a40a005b26880d056b3ddc22194c (diff) |
Use external string when raising error (#4881)
JerryScript-DCO-1.0-Signed-off-by: Csaba Repasi repasics@inf.u-szeged.hu
-rw-r--r-- | jerry-core/ecma/operations/ecma-exceptions.c | 20 | ||||
-rw-r--r-- | jerry-core/ecma/operations/ecma-exceptions.h | 2 | ||||
-rw-r--r-- | jerry-core/parser/js/js-parser.c | 5 | ||||
-rw-r--r-- | tests/unit-core/test-to-integer.c | 3 | ||||
-rw-r--r-- | tests/unit-core/test-to-length.c | 3 |
5 files changed, 18 insertions, 15 deletions
diff --git a/jerry-core/ecma/operations/ecma-exceptions.c b/jerry-core/ecma/operations/ecma-exceptions.c index e82b03e2..9232a680 100644 --- a/jerry-core/ecma/operations/ecma-exceptions.c +++ b/jerry-core/ecma/operations/ecma-exceptions.c @@ -300,14 +300,14 @@ ecma_get_error_type (ecma_object_t *error_object_p) /**< possible error object * */ ecma_value_t ecma_raise_standard_error (jerry_error_t error_type, /**< error type */ - const char *msg_p) /**< error message */ + ecma_error_msg_t msg) /**< error message */ { ecma_object_t *error_obj_p; - const lit_utf8_byte_t *str_p = (lit_utf8_byte_t *) msg_p; + const lit_utf8_byte_t *str_p = (lit_utf8_byte_t *) ecma_get_error_msg (msg); - if (msg_p != NULL) + if (msg != ECMA_ERR_EMPTY) { - ecma_string_t *error_msg_p = ecma_new_ecma_string_from_utf8 (str_p, lit_zt_utf8_string_size (str_p)); + ecma_string_t *error_msg_p = ecma_new_ecma_external_string_from_cesu8 (str_p, ecma_get_error_size (msg), NULL); error_obj_p = ecma_new_standard_error (error_type, error_msg_p); ecma_deref_ecma_string (error_msg_p); } @@ -417,7 +417,7 @@ ecma_raise_standard_error_with_format (jerry_error_t error_type, /**< error type ecma_value_t ecma_raise_common_error (ecma_error_msg_t msg) /**< error message */ { - return ecma_raise_standard_error (JERRY_ERROR_COMMON, ecma_get_error_msg (msg)); + return ecma_raise_standard_error (JERRY_ERROR_COMMON, msg); } /* ecma_raise_common_error */ /** @@ -431,7 +431,7 @@ ecma_raise_common_error (ecma_error_msg_t msg) /**< error message */ ecma_value_t ecma_raise_range_error (ecma_error_msg_t msg) /**< error message */ { - return ecma_raise_standard_error (JERRY_ERROR_RANGE, ecma_get_error_msg (msg)); + return ecma_raise_standard_error (JERRY_ERROR_RANGE, msg); } /* ecma_raise_range_error */ /** @@ -445,7 +445,7 @@ ecma_raise_range_error (ecma_error_msg_t msg) /**< error message */ ecma_value_t ecma_raise_reference_error (ecma_error_msg_t msg) /**< error message */ { - return ecma_raise_standard_error (JERRY_ERROR_REFERENCE, ecma_get_error_msg (msg)); + return ecma_raise_standard_error (JERRY_ERROR_REFERENCE, msg); } /* ecma_raise_reference_error */ /** @@ -459,7 +459,7 @@ ecma_raise_reference_error (ecma_error_msg_t msg) /**< error message */ ecma_value_t ecma_raise_syntax_error (ecma_error_msg_t msg) /**< error message */ { - return ecma_raise_standard_error (JERRY_ERROR_SYNTAX, ecma_get_error_msg (msg)); + return ecma_raise_standard_error (JERRY_ERROR_SYNTAX, msg); } /* ecma_raise_syntax_error */ /** @@ -473,7 +473,7 @@ ecma_raise_syntax_error (ecma_error_msg_t msg) /**< error message */ ecma_value_t ecma_raise_type_error (ecma_error_msg_t msg) /**< error message */ { - return ecma_raise_standard_error (JERRY_ERROR_TYPE, ecma_get_error_msg (msg)); + return ecma_raise_standard_error (JERRY_ERROR_TYPE, msg); } /* ecma_raise_type_error */ /** @@ -487,7 +487,7 @@ ecma_raise_type_error (ecma_error_msg_t msg) /**< error message */ ecma_value_t ecma_raise_uri_error (ecma_error_msg_t msg) /**< error message */ { - return ecma_raise_standard_error (JERRY_ERROR_URI, ecma_get_error_msg (msg)); + return ecma_raise_standard_error (JERRY_ERROR_URI, msg); } /* ecma_raise_uri_error */ #if (JERRY_STACK_LIMIT != 0) diff --git a/jerry-core/ecma/operations/ecma-exceptions.h b/jerry-core/ecma/operations/ecma-exceptions.h index 3f564124..d4e6477d 100644 --- a/jerry-core/ecma/operations/ecma-exceptions.h +++ b/jerry-core/ecma/operations/ecma-exceptions.h @@ -32,7 +32,7 @@ ecma_object_t *ecma_new_standard_error (jerry_error_t error_type, ecma_string_t #if JERRY_ERROR_MESSAGES ecma_value_t ecma_raise_standard_error_with_format (jerry_error_t error_type, const char *msg_p, ...); #endif /* JERRY_ERROR_MESSAGES */ -ecma_value_t ecma_raise_standard_error (jerry_error_t error_type, const char *msg_p); +ecma_value_t ecma_raise_standard_error (jerry_error_t error_type, ecma_error_msg_t msg); ecma_value_t ecma_raise_common_error (ecma_error_msg_t msg); ecma_value_t ecma_raise_range_error (ecma_error_msg_t msg); ecma_value_t ecma_raise_reference_error (ecma_error_msg_t msg); diff --git a/jerry-core/parser/js/js-parser.c b/jerry-core/parser/js/js-parser.c index e1964202..b9e7f127 100644 --- a/jerry-core/parser/js/js-parser.c +++ b/jerry-core/parser/js/js-parser.c @@ -2505,8 +2505,9 @@ parser_parse_source (void *source_p, /**< source code */ } else { - err_str_p = - ecma_new_ecma_string_from_utf8 (parser_get_error_utf8 (context.error), parser_get_error_size (context.error)); + err_str_p = ecma_new_ecma_external_string_from_cesu8 (parser_get_error_utf8 (context.error), + parser_get_error_size (context.error), + NULL); } ecma_value_t err_str_val = ecma_make_string_value (err_str_p); ecma_value_t line_str_val = ecma_make_uint32_value (context.token.line); diff --git a/tests/unit-core/test-to-integer.c b/tests/unit-core/test-to-integer.c index 7dee993b..4e7c3f58 100644 --- a/tests/unit-core/test-to-integer.c +++ b/tests/unit-core/test-to-integer.c @@ -17,6 +17,7 @@ #include "jerryscript.h" #include "ecma-conversion.h" +#include "ecma-errors.h" #include "ecma-exceptions.h" #include "ecma-globals.h" #include "ecma-helpers.h" @@ -49,7 +50,7 @@ main (void) TEST_ASSERT (num == 123); /* 2 */ - ecma_value_t error = ecma_raise_standard_error (JERRY_ERROR_TYPE, "I am a neat little error message"); + ecma_value_t error = ecma_raise_standard_error (JERRY_ERROR_TYPE, ECMA_ERR_INVALID_ARRAY_LENGTH); result = ecma_op_to_integer (error, &num); diff --git a/tests/unit-core/test-to-length.c b/tests/unit-core/test-to-length.c index c1f196a6..c2b43701 100644 --- a/tests/unit-core/test-to-length.c +++ b/tests/unit-core/test-to-length.c @@ -18,6 +18,7 @@ #include "jerryscript.h" #include "ecma-conversion.h" +#include "ecma-errors.h" #include "ecma-exceptions.h" #include "ecma-globals.h" #include "ecma-helpers-number.h" @@ -51,7 +52,7 @@ main (void) TEST_ASSERT (num == 123); /* 1, 3 */ - ecma_value_t error_throw = ecma_raise_standard_error (JERRY_ERROR_TYPE, "I'm an error"); + ecma_value_t error_throw = ecma_raise_standard_error (JERRY_ERROR_TYPE, ECMA_ERR_INVALID_ARRAY_LENGTH); result = ecma_op_to_length (error_throw, &num); |