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:
@@ -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)
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user