Fix runtime error: left shift (#4912)

This patch fixes #4703
This patch fixes #4702

JerryScript-DCO-1.0-Signed-off-by: Daniel Batiz daniel.batiz@h-lab.eu
This commit is contained in:
batizdaniel
2021-12-23 11:33:21 +01:00
committed by GitHub
parent a63e1d294d
commit a6ab5e9abe
3 changed files with 18 additions and 3 deletions
+4 -2
View File
@@ -414,13 +414,15 @@ ecma_integer_multiply (ecma_integer_value_t left_integer, /**< left operand */
if (JERRY_UNLIKELY ((left_integer & (left_integer - 1)) == 0))
{
/* Right shift right_integer with log2 (left_integer) */
return ecma_make_integer_value (right_integer << (__builtin_ctz ((unsigned int) left_integer)));
return ecma_make_integer_value (
(int32_t) ((uint32_t) right_integer << (__builtin_ctz ((unsigned int) left_integer))));
}
if (JERRY_UNLIKELY ((right_integer & (right_integer - 1)) == 0))
{
/* Right shift left_integer with log2 (right_integer) */
return ecma_make_integer_value (left_integer << (__builtin_ctz ((unsigned int) right_integer)));
return ecma_make_integer_value (
(int32_t) ((uint32_t) left_integer << (__builtin_ctz ((unsigned int) right_integer))));
}
#endif /* defined (__GNUC__) || defined (__clang__) */