@@ -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
@@ -1065,8 +1066,9 @@ ecma_uint32_to_buffer (uint32_t num, /**< number */
1065
1066
lit_utf8_byte_t * buffer_p /**< destination buffer */ ,
1066
1067
lit_utf8_size_t buffer_size /**< buffer size */ )
1067
1068
{
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 );
1070
1072
1071
1073
digit_count = JERRY_MIN (buffer_size , digit_count );
1072
1074
memcpy (buffer_p , digits , digit_count );
@@ -1176,7 +1178,7 @@ ecma_string_to_cesu8_bytes (const ecma_string_t *string_desc_p, /**< ecma-string
1176
1178
*
1177
1179
* @return size in bytes
1178
1180
*/
1179
- static inline lit_utf8_size_t JERRY_ATTR_ALWAYS_INLINE
1181
+ extern inline lit_utf8_size_t JERRY_ATTR_ALWAYS_INLINE
1180
1182
ecma_string_get_uint32_size (const uint32_t uint32_number ) /**< number in the string-descriptor */
1181
1183
{
1182
1184
uint32_t prev_number = 1 ;
@@ -1274,11 +1276,11 @@ ecma_string_get_chars (const ecma_string_t *string_p, /**< ecma-string */
1274
1276
}
1275
1277
else
1276
1278
{
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 );
1278
1280
* flags_p |= ECMA_STRING_FLAG_MUST_BE_FREED ;
1279
1281
}
1280
1282
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 );
1282
1284
1283
1285
JERRY_ASSERT (length == size );
1284
1286
* flags_p |= ECMA_STRING_FLAG_IS_UINT32 ;
@@ -1325,11 +1327,11 @@ ecma_string_get_chars (const ecma_string_t *string_p, /**< ecma-string */
1325
1327
}
1326
1328
else
1327
1329
{
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 );
1329
1331
* flags_p |= ECMA_STRING_FLAG_MUST_BE_FREED ;
1330
1332
}
1331
1333
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 );
1333
1335
1334
1336
JERRY_ASSERT (length == size );
1335
1337
* 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-
1694
1696
const lit_utf8_byte_t * utf8_string1_p , * utf8_string2_p ;
1695
1697
lit_utf8_size_t utf8_string1_size , utf8_string2_size ;
1696
1698
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 ];
1699
1701
1700
1702
if (ECMA_IS_DIRECT_STRING (string1_p ))
1701
1703
{
@@ -1707,7 +1709,7 @@ ecma_compare_ecma_strings_relational (const ecma_string_t *string1_p, /**< ecma-
1707
1709
{
1708
1710
utf8_string1_size = ecma_uint32_to_utf8_string ((uint32_t ) ECMA_GET_DIRECT_STRING_VALUE (string1_p ),
1709
1711
uint32_to_string_buffer1 ,
1710
- ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 );
1712
+ ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED );
1711
1713
utf8_string1_p = uint32_to_string_buffer1 ;
1712
1714
}
1713
1715
}
@@ -1723,7 +1725,7 @@ ecma_compare_ecma_strings_relational (const ecma_string_t *string1_p, /**< ecma-
1723
1725
{
1724
1726
utf8_string1_size = ecma_uint32_to_utf8_string (string1_p -> u .uint32_number ,
1725
1727
uint32_to_string_buffer1 ,
1726
- ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 );
1728
+ ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED );
1727
1729
utf8_string1_p = uint32_to_string_buffer1 ;
1728
1730
}
1729
1731
}
@@ -1738,7 +1740,7 @@ ecma_compare_ecma_strings_relational (const ecma_string_t *string1_p, /**< ecma-
1738
1740
{
1739
1741
utf8_string2_size = ecma_uint32_to_utf8_string ((uint32_t ) ECMA_GET_DIRECT_STRING_VALUE (string2_p ),
1740
1742
uint32_to_string_buffer2 ,
1741
- ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 );
1743
+ ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED );
1742
1744
utf8_string2_p = uint32_to_string_buffer2 ;
1743
1745
}
1744
1746
}
@@ -1754,7 +1756,7 @@ ecma_compare_ecma_strings_relational (const ecma_string_t *string1_p, /**< ecma-
1754
1756
{
1755
1757
utf8_string2_size = ecma_uint32_to_utf8_string (string2_p -> u .uint32_number ,
1756
1758
uint32_to_string_buffer2 ,
1757
- ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 );
1759
+ ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED );
1758
1760
utf8_string2_p = uint32_to_string_buffer2 ;
1759
1761
}
1760
1762
}
@@ -2039,7 +2041,7 @@ ecma_string_get_char_at_pos (const ecma_string_t *string_p, /**< ecma-string */
2039
2041
{
2040
2042
JERRY_ASSERT (index < ecma_string_get_length (string_p ));
2041
2043
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 ];
2043
2045
2044
2046
if (ECMA_IS_DIRECT_STRING (string_p ))
2045
2047
{
@@ -2064,7 +2066,9 @@ ecma_string_get_char_at_pos (const ecma_string_t *string_p, /**< ecma-string */
2064
2066
JERRY_ASSERT (ECMA_GET_DIRECT_STRING_TYPE (string_p ) == ECMA_DIRECT_STRING_UINT );
2065
2067
uint32_t uint32_number = (uint32_t ) ECMA_GET_DIRECT_STRING_VALUE (string_p );
2066
2068
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 );
2068
2072
2069
2073
return (ecma_char_t ) uint32_to_string_buffer [index ];
2070
2074
}
@@ -2110,7 +2114,7 @@ ecma_string_get_char_at_pos (const ecma_string_t *string_p, /**< ecma-string */
2110
2114
{
2111
2115
ecma_uint32_to_utf8_string (string_p -> u .uint32_number ,
2112
2116
uint32_to_string_buffer ,
2113
- ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32 );
2117
+ ECMA_MAX_CHARS_IN_STRINGIFIED_UINT32_WITH_ZERO_TERMINATED );
2114
2118
2115
2119
return (ecma_char_t ) uint32_to_string_buffer [index ];
2116
2120
}
0 commit comments