Skip to content

Commit fa3b5a1

Browse files
authored
* ext/intl: master community build fix (attempt). (#22080)
reproducible normally with ``` php -r 'var_dump(new \NumberFormatter("en", \NumberFormatter::DECIMAL)->format(INF));' ``` but could not locally (asan version ?) but mostly due to uninitialised garbage. regression from 3ed80a1
1 parent 27d2555 commit fa3b5a1

2 files changed

Lines changed: 16 additions & 1 deletion

File tree

ext/intl/intl_convertcpp.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ zend_string* intl_charFromString(const UnicodeString &from, UErrorCode *status)
7272

7373
const UChar *utf16buf = from.getBuffer();
7474
int32_t actual_len;
75-
u_strToUTF8WithSub(ZSTR_VAL(u8res), capacity, &actual_len, utf16buf, from.length(),
75+
u_strToUTF8WithSub(ZSTR_VAL(u8res), capacity + 1, &actual_len, utf16buf, from.length(),
7676
U_SENTINEL, NULL, status);
7777

7878
if (U_FAILURE(*status)) {

ext/intl/tests/gh21998.phpt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
--TEST--
2+
GH-21998 (NumberFormatter::format(INF) leaves a non-NUL-terminated zend_string)
3+
--EXTENSIONS--
4+
intl
5+
--FILE--
6+
<?php
7+
$fmt = new NumberFormatter("en", NumberFormatter::DECIMAL);
8+
var_dump($fmt->format(INF));
9+
var_dump($fmt->format(-INF));
10+
var_dump($fmt->format(NAN));
11+
?>
12+
--EXPECT--
13+
string(3) "∞"
14+
string(4) "-∞"
15+
string(3) "NaN"

0 commit comments

Comments
 (0)