@@ -746,7 +746,8 @@ ecma_append_chars_to_string (ecma_string_t *string1_p, /**< base ecma-string */
746746 return ecma_get_magic_string (magic_string_id );
747747 }
748748
749- if ((cesu8_string1_flags & ECMA_STRING_FLAG_IS_UINT32 ) && new_size < ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 )
749+ if ((cesu8_string1_flags & ECMA_STRING_FLAG_IS_UINT32 )
750+ && new_size < ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED )
750751 {
751752 memcpy (cesu8_string1_uint32_buffer + cesu8_string1 .size , cesu8_string2_p , cesu8_string2_size );
752753
@@ -1065,8 +1066,9 @@ ecma_uint32_to_buffer (uint32_t num, /**< number */
10651066 lit_utf8_byte_t * buffer_p /**< destination buffer */ ,
10661067 lit_utf8_size_t buffer_size /**< buffer size */ )
10671068{
1068- lit_utf8_byte_t digits [ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 ];
1069- lit_utf8_size_t digit_count = ecma_uint32_to_utf8_string (num , digits , ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 );
1069+ lit_utf8_byte_t digits [ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED ];
1070+ lit_utf8_size_t digit_count =
1071+ ecma_uint32_to_utf8_string (num , digits , ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED );
10701072
10711073 digit_count = JERRY_MIN (buffer_size , digit_count );
10721074 memcpy (buffer_p , digits , digit_count );
@@ -1176,7 +1178,7 @@ ecma_string_to_cesu8_bytes (const ecma_string_t *string_desc_p, /**< ecma-string
11761178 *
11771179 * @return size in bytes
11781180 */
1179- static inline lit_utf8_size_t JERRY_ATTR_ALWAYS_INLINE
1181+ extern inline lit_utf8_size_t JERRY_ATTR_ALWAYS_INLINE
11801182ecma_string_get_uint32_size (const uint32_t uint32_number ) /**< number in the string-descriptor */
11811183{
11821184 uint32_t prev_number = 1 ;
@@ -1274,11 +1276,11 @@ ecma_string_get_chars (const ecma_string_t *string_p, /**< ecma-string */
12741276 }
12751277 else
12761278 {
1277- result_p = (const lit_utf8_byte_t * ) jmem_heap_alloc_block (size );
1279+ result_p = (const lit_utf8_byte_t * ) jmem_heap_alloc_block (size + 1 );
12781280 * flags_p |= ECMA_STRING_FLAG_MUST_BE_FREED ;
12791281 }
12801282
1281- length = ecma_uint32_to_utf8_string (uint32_number , (lit_utf8_byte_t * ) result_p , size );
1283+ length = ecma_uint32_to_utf8_string (uint32_number , (lit_utf8_byte_t * ) result_p , size + 1 );
12821284
12831285 JERRY_ASSERT (length == size );
12841286 * flags_p |= ECMA_STRING_FLAG_IS_UINT32 ;
@@ -1325,11 +1327,11 @@ ecma_string_get_chars (const ecma_string_t *string_p, /**< ecma-string */
13251327 }
13261328 else
13271329 {
1328- result_p = (const lit_utf8_byte_t * ) jmem_heap_alloc_block (size );
1330+ result_p = (const lit_utf8_byte_t * ) jmem_heap_alloc_block (size + 1 );
13291331 * flags_p |= ECMA_STRING_FLAG_MUST_BE_FREED ;
13301332 }
13311333
1332- length = ecma_uint32_to_utf8_string (string_p -> u .uint32_number , (lit_utf8_byte_t * ) result_p , size );
1334+ length = ecma_uint32_to_utf8_string (string_p -> u .uint32_number , (lit_utf8_byte_t * ) result_p , size + 1 );
13331335
13341336 JERRY_ASSERT (length == size );
13351337 * flags_p |= ECMA_STRING_FLAG_IS_UINT32 | ECMA_STRING_FLAG_REHASH_NEEDED ;
@@ -1694,8 +1696,8 @@ ecma_compare_ecma_strings_relational (const ecma_string_t *string1_p, /**< ecma-
16941696 const lit_utf8_byte_t * utf8_string1_p , * utf8_string2_p ;
16951697 lit_utf8_size_t utf8_string1_size , utf8_string2_size ;
16961698
1697- lit_utf8_byte_t uint32_to_string_buffer1 [ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 ];
1698- lit_utf8_byte_t uint32_to_string_buffer2 [ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 ];
1699+ lit_utf8_byte_t uint32_to_string_buffer1 [ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED ];
1700+ lit_utf8_byte_t uint32_to_string_buffer2 [ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED ];
16991701
17001702 if (ECMA_IS_DIRECT_STRING (string1_p ))
17011703 {
@@ -1707,7 +1709,7 @@ ecma_compare_ecma_strings_relational (const ecma_string_t *string1_p, /**< ecma-
17071709 {
17081710 utf8_string1_size = ecma_uint32_to_utf8_string ((uint32_t ) ECMA_GET_DIRECT_STRING_VALUE (string1_p ),
17091711 uint32_to_string_buffer1 ,
1710- ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 );
1712+ ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED );
17111713 utf8_string1_p = uint32_to_string_buffer1 ;
17121714 }
17131715 }
@@ -1723,7 +1725,7 @@ ecma_compare_ecma_strings_relational (const ecma_string_t *string1_p, /**< ecma-
17231725 {
17241726 utf8_string1_size = ecma_uint32_to_utf8_string (string1_p -> u .uint32_number ,
17251727 uint32_to_string_buffer1 ,
1726- ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 );
1728+ ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED );
17271729 utf8_string1_p = uint32_to_string_buffer1 ;
17281730 }
17291731 }
@@ -1738,7 +1740,7 @@ ecma_compare_ecma_strings_relational (const ecma_string_t *string1_p, /**< ecma-
17381740 {
17391741 utf8_string2_size = ecma_uint32_to_utf8_string ((uint32_t ) ECMA_GET_DIRECT_STRING_VALUE (string2_p ),
17401742 uint32_to_string_buffer2 ,
1741- ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 );
1743+ ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED );
17421744 utf8_string2_p = uint32_to_string_buffer2 ;
17431745 }
17441746 }
@@ -1754,7 +1756,7 @@ ecma_compare_ecma_strings_relational (const ecma_string_t *string1_p, /**< ecma-
17541756 {
17551757 utf8_string2_size = ecma_uint32_to_utf8_string (string2_p -> u .uint32_number ,
17561758 uint32_to_string_buffer2 ,
1757- ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 );
1759+ ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED );
17581760 utf8_string2_p = uint32_to_string_buffer2 ;
17591761 }
17601762 }
@@ -2039,7 +2041,7 @@ ecma_string_get_char_at_pos (const ecma_string_t *string_p, /**< ecma-string */
20392041{
20402042 JERRY_ASSERT (index < ecma_string_get_length (string_p ));
20412043
2042- lit_utf8_byte_t uint32_to_string_buffer [ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 ];
2044+ lit_utf8_byte_t uint32_to_string_buffer [ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED ];
20432045
20442046 if (ECMA_IS_DIRECT_STRING (string_p ))
20452047 {
@@ -2064,7 +2066,9 @@ ecma_string_get_char_at_pos (const ecma_string_t *string_p, /**< ecma-string */
20642066 JERRY_ASSERT (ECMA_GET_DIRECT_STRING_TYPE (string_p ) == ECMA_DIRECT_STRING_UINT );
20652067 uint32_t uint32_number = (uint32_t ) ECMA_GET_DIRECT_STRING_VALUE (string_p );
20662068
2067- ecma_uint32_to_utf8_string (uint32_number , uint32_to_string_buffer , ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 );
2069+ ecma_uint32_to_utf8_string (uint32_number ,
2070+ uint32_to_string_buffer ,
2071+ ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED );
20682072
20692073 return (ecma_char_t ) uint32_to_string_buffer [index ];
20702074 }
@@ -2110,7 +2114,7 @@ ecma_string_get_char_at_pos (const ecma_string_t *string_p, /**< ecma-string */
21102114 {
21112115 ecma_uint32_to_utf8_string (string_p -> u .uint32_number ,
21122116 uint32_to_string_buffer ,
2113- ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 );
2117+ ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED );
21142118
21152119 return (ecma_char_t ) uint32_to_string_buffer [index ];
21162120 }
0 commit comments