Fix a few issues which can lead to undefined-behaviour (#1730)
JerryScript-DCO-1.0-Signed-off-by: Zsolt Borbély zsborbely.u-szeged@partner.samsung.com
This commit is contained in:
@@ -370,7 +370,7 @@ ecma_make_integer_value (ecma_integer_value_t integer_value) /**< integer number
|
|||||||
{
|
{
|
||||||
JERRY_ASSERT (ECMA_IS_INTEGER_NUMBER (integer_value));
|
JERRY_ASSERT (ECMA_IS_INTEGER_NUMBER (integer_value));
|
||||||
|
|
||||||
return ((ecma_value_t) (integer_value << ECMA_DIRECT_SHIFT)) | ECMA_DIRECT_TYPE_INTEGER_VALUE;
|
return (((ecma_value_t) integer_value) << ECMA_DIRECT_SHIFT) | ECMA_DIRECT_TYPE_INTEGER_VALUE;
|
||||||
} /* ecma_make_integer_value */
|
} /* ecma_make_integer_value */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -126,7 +126,8 @@ re_bytecode_list_insert (re_bytecode_ctx_t *bc_ctx_p, /**< RegExp bytecode conte
|
|||||||
inline ecma_char_t __attr_always_inline___
|
inline ecma_char_t __attr_always_inline___
|
||||||
re_get_char (uint8_t **bc_p) /**< pointer to bytecode start */
|
re_get_char (uint8_t **bc_p) /**< pointer to bytecode start */
|
||||||
{
|
{
|
||||||
ecma_char_t chr = *((ecma_char_t *) *bc_p);
|
ecma_char_t chr;
|
||||||
|
memcpy (&chr, *bc_p, sizeof (ecma_char_t));
|
||||||
(*bc_p) += sizeof (ecma_char_t);
|
(*bc_p) += sizeof (ecma_char_t);
|
||||||
return chr;
|
return chr;
|
||||||
} /* re_get_char */
|
} /* re_get_char */
|
||||||
@@ -152,7 +153,8 @@ re_get_opcode (uint8_t **bc_p) /**< pointer to bytecode start */
|
|||||||
inline uint32_t __attr_always_inline___
|
inline uint32_t __attr_always_inline___
|
||||||
re_get_value (uint8_t **bc_p) /**< pointer to bytecode start */
|
re_get_value (uint8_t **bc_p) /**< pointer to bytecode start */
|
||||||
{
|
{
|
||||||
uint32_t value = *((uint32_t *) *bc_p);
|
uint32_t value;
|
||||||
|
memcpy (&value, *bc_p, sizeof (uint32_t));
|
||||||
(*bc_p) += sizeof (uint32_t);
|
(*bc_p) += sizeof (uint32_t);
|
||||||
return value;
|
return value;
|
||||||
} /* re_get_value */
|
} /* re_get_value */
|
||||||
|
|||||||
+2
-1
@@ -2754,7 +2754,8 @@ vm_run (const ecma_compiled_code_t *bytecode_header_p, /**< byte-code data heade
|
|||||||
frame_ctx.is_eval_code = is_eval_code;
|
frame_ctx.is_eval_code = is_eval_code;
|
||||||
frame_ctx.call_operation = VM_NO_EXEC_OP;
|
frame_ctx.call_operation = VM_NO_EXEC_OP;
|
||||||
|
|
||||||
ecma_value_t stack[call_stack_size];
|
/* Use JERRY_MAX() to avoid array declaration with size 0. */
|
||||||
|
ecma_value_t stack[JERRY_MAX (call_stack_size, 1)];
|
||||||
frame_ctx.registers_p = stack;
|
frame_ctx.registers_p = stack;
|
||||||
|
|
||||||
return vm_execute (&frame_ctx, arg_list_p, arg_list_len);
|
return vm_execute (&frame_ctx, arg_list_p, arg_list_len);
|
||||||
|
|||||||
Reference in New Issue
Block a user