Use external string when raising error (#4881)

JerryScript-DCO-1.0-Signed-off-by: Csaba Repasi repasics@inf.u-szeged.hu
This commit is contained in:
Csaba Repasi
2021-12-10 18:15:00 +01:00
committed by GitHub
parent 4cbc77d709
commit 42523bd6e2
5 changed files with 18 additions and 15 deletions
+10 -10
View File
@@ -300,14 +300,14 @@ ecma_get_error_type (ecma_object_t *error_object_p) /**< possible error object *
*/ */
ecma_value_t ecma_value_t
ecma_raise_standard_error (jerry_error_t error_type, /**< error type */ 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; 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); error_obj_p = ecma_new_standard_error (error_type, error_msg_p);
ecma_deref_ecma_string (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_value_t
ecma_raise_common_error (ecma_error_msg_t msg) /**< error message */ 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 */ } /* ecma_raise_common_error */
/** /**
@@ -431,7 +431,7 @@ ecma_raise_common_error (ecma_error_msg_t msg) /**< error message */
ecma_value_t ecma_value_t
ecma_raise_range_error (ecma_error_msg_t msg) /**< error message */ 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 */ } /* ecma_raise_range_error */
/** /**
@@ -445,7 +445,7 @@ ecma_raise_range_error (ecma_error_msg_t msg) /**< error message */
ecma_value_t ecma_value_t
ecma_raise_reference_error (ecma_error_msg_t msg) /**< error message */ 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 */ } /* ecma_raise_reference_error */
/** /**
@@ -459,7 +459,7 @@ ecma_raise_reference_error (ecma_error_msg_t msg) /**< error message */
ecma_value_t ecma_value_t
ecma_raise_syntax_error (ecma_error_msg_t msg) /**< error message */ 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 */ } /* ecma_raise_syntax_error */
/** /**
@@ -473,7 +473,7 @@ ecma_raise_syntax_error (ecma_error_msg_t msg) /**< error message */
ecma_value_t ecma_value_t
ecma_raise_type_error (ecma_error_msg_t msg) /**< error message */ 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 */ } /* ecma_raise_type_error */
/** /**
@@ -487,7 +487,7 @@ ecma_raise_type_error (ecma_error_msg_t msg) /**< error message */
ecma_value_t ecma_value_t
ecma_raise_uri_error (ecma_error_msg_t msg) /**< error message */ 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 */ } /* ecma_raise_uri_error */
#if (JERRY_STACK_LIMIT != 0) #if (JERRY_STACK_LIMIT != 0)
+1 -1
View File
@@ -32,7 +32,7 @@ ecma_object_t *ecma_new_standard_error (jerry_error_t error_type, ecma_string_t
#if JERRY_ERROR_MESSAGES #if JERRY_ERROR_MESSAGES
ecma_value_t ecma_raise_standard_error_with_format (jerry_error_t error_type, const char *msg_p, ...); ecma_value_t ecma_raise_standard_error_with_format (jerry_error_t error_type, const char *msg_p, ...);
#endif /* JERRY_ERROR_MESSAGES */ #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_common_error (ecma_error_msg_t msg);
ecma_value_t ecma_raise_range_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); ecma_value_t ecma_raise_reference_error (ecma_error_msg_t msg);
+3 -2
View File
@@ -2505,8 +2505,9 @@ parser_parse_source (void *source_p, /**< source code */
} }
else else
{ {
err_str_p = err_str_p = ecma_new_ecma_external_string_from_cesu8 (parser_get_error_utf8 (context.error),
ecma_new_ecma_string_from_utf8 (parser_get_error_utf8 (context.error), parser_get_error_size (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 err_str_val = ecma_make_string_value (err_str_p);
ecma_value_t line_str_val = ecma_make_uint32_value (context.token.line); ecma_value_t line_str_val = ecma_make_uint32_value (context.token.line);
+2 -1
View File
@@ -17,6 +17,7 @@
#include "jerryscript.h" #include "jerryscript.h"
#include "ecma-conversion.h" #include "ecma-conversion.h"
#include "ecma-errors.h"
#include "ecma-exceptions.h" #include "ecma-exceptions.h"
#include "ecma-globals.h" #include "ecma-globals.h"
#include "ecma-helpers.h" #include "ecma-helpers.h"
@@ -49,7 +50,7 @@ main (void)
TEST_ASSERT (num == 123); TEST_ASSERT (num == 123);
/* 2 */ /* 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); result = ecma_op_to_integer (error, &num);
+2 -1
View File
@@ -18,6 +18,7 @@
#include "jerryscript.h" #include "jerryscript.h"
#include "ecma-conversion.h" #include "ecma-conversion.h"
#include "ecma-errors.h"
#include "ecma-exceptions.h" #include "ecma-exceptions.h"
#include "ecma-globals.h" #include "ecma-globals.h"
#include "ecma-helpers-number.h" #include "ecma-helpers-number.h"
@@ -51,7 +52,7 @@ main (void)
TEST_ASSERT (num == 123); TEST_ASSERT (num == 123);
/* 1, 3 */ /* 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); result = ecma_op_to_length (error_throw, &num);