@@ -746,7 +746,8 @@ ecma_append_chars_to_string (ecma_string_t *string1_p, /**< base ecma-string */
746
746
return ecma_get_magic_string (magic_string_id );
747
747
}
748
748
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 )
750
751
{
751
752
memcpy (cesu8_string1_uint32_buffer + cesu8_string1 .size , cesu8_string2_p , cesu8_string2_size );
752
753
@@ -1061,8 +1062,9 @@ ecma_uint32_to_buffer (uint32_t num, /**< number */
1061
1062
lit_utf8_byte_t * buffer_p /**< destination buffer */ ,
1062
1063
lit_utf8_size_t buffer_size /**< buffer size */ )
1063
1064
{
1064
- lit_utf8_byte_t digits [ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 ];
1065
- lit_utf8_size_t digit_count = ecma_uint32_to_utf8_string (num , digits , ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 );
1065
+ lit_utf8_byte_t digits [ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED ];
1066
+ lit_utf8_size_t digit_count =
1067
+ ecma_uint32_to_utf8_string (num , digits , ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED );
1066
1068
1067
1069
digit_count = JERRY_MIN (buffer_size , digit_count );
1068
1070
memcpy (buffer_p , digits , digit_count );
@@ -1170,7 +1172,7 @@ ecma_string_to_cesu8_bytes (const ecma_string_t *string_desc_p, /**< ecma-string
1170
1172
*
1171
1173
* @return size in bytes
1172
1174
*/
1173
- static inline lit_utf8_size_t JERRY_ATTR_ALWAYS_INLINE
1175
+ extern inline lit_utf8_size_t JERRY_ATTR_ALWAYS_INLINE
1174
1176
ecma_string_get_uint32_size (const uint32_t uint32_number ) /**< number in the string-descriptor */
1175
1177
{
1176
1178
uint32_t prev_number = 1 ;
@@ -1268,11 +1270,11 @@ ecma_string_get_chars (const ecma_string_t *string_p, /**< ecma-string */
1268
1270
}
1269
1271
else
1270
1272
{
1271
- result_p = (const lit_utf8_byte_t * ) jmem_heap_alloc_block (size );
1273
+ result_p = (const lit_utf8_byte_t * ) jmem_heap_alloc_block (size + 1 );
1272
1274
* flags_p |= ECMA_STRING_FLAG_MUST_BE_FREED ;
1273
1275
}
1274
1276
1275
- length = ecma_uint32_to_utf8_string (uint32_number , (lit_utf8_byte_t * ) result_p , size );
1277
+ length = ecma_uint32_to_utf8_string (uint32_number , (lit_utf8_byte_t * ) result_p , size + 1 );
1276
1278
1277
1279
JERRY_ASSERT (length == size );
1278
1280
* flags_p |= ECMA_STRING_FLAG_IS_UINT32 ;
@@ -1319,11 +1321,11 @@ ecma_string_get_chars (const ecma_string_t *string_p, /**< ecma-string */
1319
1321
}
1320
1322
else
1321
1323
{
1322
- result_p = (const lit_utf8_byte_t * ) jmem_heap_alloc_block (size );
1324
+ result_p = (const lit_utf8_byte_t * ) jmem_heap_alloc_block (size + 1 );
1323
1325
* flags_p |= ECMA_STRING_FLAG_MUST_BE_FREED ;
1324
1326
}
1325
1327
1326
- length = ecma_uint32_to_utf8_string (string_p -> u .uint32_number , (lit_utf8_byte_t * ) result_p , size );
1328
+ length = ecma_uint32_to_utf8_string (string_p -> u .uint32_number , (lit_utf8_byte_t * ) result_p , size + 1 );
1327
1329
1328
1330
JERRY_ASSERT (length == size );
1329
1331
* flags_p |= ECMA_STRING_FLAG_IS_UINT32 | ECMA_STRING_FLAG_REHASH_NEEDED ;
@@ -1689,8 +1691,8 @@ ecma_compare_ecma_strings_relational (const ecma_string_t *string1_p, /**< ecma-
1689
1691
const lit_utf8_byte_t * utf8_string1_p , * utf8_string2_p ;
1690
1692
lit_utf8_size_t utf8_string1_size , utf8_string2_size ;
1691
1693
1692
- lit_utf8_byte_t uint32_to_string_buffer1 [ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 ];
1693
- lit_utf8_byte_t uint32_to_string_buffer2 [ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 ];
1694
+ lit_utf8_byte_t uint32_to_string_buffer1 [ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED ];
1695
+ lit_utf8_byte_t uint32_to_string_buffer2 [ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED ];
1694
1696
1695
1697
if (ECMA_IS_DIRECT_STRING (string1_p ))
1696
1698
{
@@ -1702,7 +1704,7 @@ ecma_compare_ecma_strings_relational (const ecma_string_t *string1_p, /**< ecma-
1702
1704
{
1703
1705
utf8_string1_size = ecma_uint32_to_utf8_string ((uint32_t ) ECMA_GET_DIRECT_STRING_VALUE (string1_p ),
1704
1706
uint32_to_string_buffer1 ,
1705
- ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 );
1707
+ ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED );
1706
1708
utf8_string1_p = uint32_to_string_buffer1 ;
1707
1709
}
1708
1710
}
@@ -1718,7 +1720,7 @@ ecma_compare_ecma_strings_relational (const ecma_string_t *string1_p, /**< ecma-
1718
1720
{
1719
1721
utf8_string1_size = ecma_uint32_to_utf8_string (string1_p -> u .uint32_number ,
1720
1722
uint32_to_string_buffer1 ,
1721
- ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 );
1723
+ ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED );
1722
1724
utf8_string1_p = uint32_to_string_buffer1 ;
1723
1725
}
1724
1726
}
@@ -1733,7 +1735,7 @@ ecma_compare_ecma_strings_relational (const ecma_string_t *string1_p, /**< ecma-
1733
1735
{
1734
1736
utf8_string2_size = ecma_uint32_to_utf8_string ((uint32_t ) ECMA_GET_DIRECT_STRING_VALUE (string2_p ),
1735
1737
uint32_to_string_buffer2 ,
1736
- ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 );
1738
+ ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED );
1737
1739
utf8_string2_p = uint32_to_string_buffer2 ;
1738
1740
}
1739
1741
}
@@ -1749,7 +1751,7 @@ ecma_compare_ecma_strings_relational (const ecma_string_t *string1_p, /**< ecma-
1749
1751
{
1750
1752
utf8_string2_size = ecma_uint32_to_utf8_string (string2_p -> u .uint32_number ,
1751
1753
uint32_to_string_buffer2 ,
1752
- ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 );
1754
+ ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED );
1753
1755
utf8_string2_p = uint32_to_string_buffer2 ;
1754
1756
}
1755
1757
}
@@ -2034,7 +2036,7 @@ ecma_string_get_char_at_pos (const ecma_string_t *string_p, /**< ecma-string */
2034
2036
{
2035
2037
JERRY_ASSERT (index < ecma_string_get_length (string_p ));
2036
2038
2037
- lit_utf8_byte_t uint32_to_string_buffer [ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 ];
2039
+ lit_utf8_byte_t uint32_to_string_buffer [ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED ];
2038
2040
2039
2041
if (ECMA_IS_DIRECT_STRING (string_p ))
2040
2042
{
@@ -2059,7 +2061,9 @@ ecma_string_get_char_at_pos (const ecma_string_t *string_p, /**< ecma-string */
2059
2061
JERRY_ASSERT (ECMA_GET_DIRECT_STRING_TYPE (string_p ) == ECMA_DIRECT_STRING_UINT );
2060
2062
uint32_t uint32_number = (uint32_t ) ECMA_GET_DIRECT_STRING_VALUE (string_p );
2061
2063
2062
- ecma_uint32_to_utf8_string (uint32_number , uint32_to_string_buffer , ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 );
2064
+ ecma_uint32_to_utf8_string (uint32_number ,
2065
+ uint32_to_string_buffer ,
2066
+ ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED );
2063
2067
2064
2068
return (ecma_char_t ) uint32_to_string_buffer [index ];
2065
2069
}
@@ -2105,7 +2109,7 @@ ecma_string_get_char_at_pos (const ecma_string_t *string_p, /**< ecma-string */
2105
2109
{
2106
2110
ecma_uint32_to_utf8_string (string_p -> u .uint32_number ,
2107
2111
uint32_to_string_buffer ,
2108
- ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 );
2112
+ ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED );
2109
2113
2110
2114
return (ecma_char_t ) uint32_to_string_buffer [index ];
2111
2115
}
0 commit comments