Fixes uint16_t overflow in ecma_new_ecma_string_from_utf8_converted_to_cesu8 ()
This unreported test issue revealed an assertion in jmem_heap_finalize (). During the conversion the lot of additional information what a cesu8 represented string needs caused overflow while setting the new ecma_string_t variable's length. This patch fixes this issue and the mentioned test case is available here: https://gist.github.com/rerobika/3bd590fdcf664a3fcfcc98f11b14c74e JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik frobert@inf.u-szeged.hu
This commit is contained in:
@@ -273,7 +273,7 @@ ecma_new_ecma_string_from_utf8_converted_to_cesu8 (const lit_utf8_byte_t *string
|
|||||||
|
|
||||||
lit_utf8_byte_t *data_p;
|
lit_utf8_byte_t *data_p;
|
||||||
|
|
||||||
if (likely (string_size <= UINT16_MAX))
|
if (likely (converted_string_size <= UINT16_MAX))
|
||||||
{
|
{
|
||||||
string_desc_p = ecma_alloc_string_buffer (sizeof (ecma_string_t) + converted_string_size);
|
string_desc_p = ecma_alloc_string_buffer (sizeof (ecma_string_t) + converted_string_size);
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
#define test_subiters (128)
|
#define test_subiters (128)
|
||||||
|
|
||||||
/* Max bytes in string. */
|
/* Max bytes in string. */
|
||||||
#define max_bytes_in_string (16 * 1024)
|
#define max_bytes_in_string (65 * 1024)
|
||||||
#define max_code_units_in_string (max_bytes_in_string)
|
#define max_code_units_in_string (max_bytes_in_string)
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
|
|||||||
Reference in New Issue
Block a user