aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCsaba Repasi <repasics@inf.u-szeged.hu>2021-12-10 18:15:00 +0100
committerGitHub <noreply@github.com>2021-12-10 18:15:00 +0100
commit42523bd6e2b114755498c9f68fd78545f9b33476 (patch)
treec6d5391225a7009e79ecf0be1551a837f0759cf9
parent4cbc77d70958a40a005b26880d056b3ddc22194c (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.c20
-rw-r--r--jerry-core/ecma/operations/ecma-exceptions.h2
-rw-r--r--jerry-core/parser/js/js-parser.c5
-rw-r--r--tests/unit-core/test-to-integer.c3
-rw-r--r--tests/unit-core/test-to-length.c3
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);