Browse Source

Fixed bug #32530 (chunk_split() does not append endstr if chunklen is

longer then the original string).
PHP-5.1
Ilia Alshanetsky 21 years ago
parent
commit
ca10457a58
  1. 8
      ext/standard/string.c
  2. 3
      ext/standard/tests/strings/chunk_split.phpt

8
ext/standard/string.c

@ -1887,7 +1887,13 @@ PHP_FUNCTION(chunk_split)
}
if (chunklen > Z_STRLEN_PP(p_str)) {
RETURN_STRINGL(Z_STRVAL_PP(p_str), Z_STRLEN_PP(p_str), 1);
/* to maintain BC, we must return original string + ending */
result_len = endlen + Z_STRLEN_PP(p_str);
result = emalloc(result_len + 1);
memcpy(result, Z_STRVAL_PP(p_str), Z_STRLEN_PP(p_str));
memcpy(result + Z_STRLEN_PP(p_str), end, endlen);
result[result_len] = '\0';
RETURN_STRINGL(result, result_len, 0);
}
if (!Z_STRLEN_PP(p_str)) {

3
ext/standard/tests/strings/chunk_split.phpt

@ -5,6 +5,7 @@ chunk_split() function
echo chunk_split('abc', 1, '-')."\n";
echo chunk_split('foooooooooooooooo', 5)."\n";
echo chunk_split(str_repeat('X', 2*76))."\n";
echo chunk_split("test", 10, "|end") . "\n";
?>
--EXPECT--
a-b-c-
@ -15,3 +16,5 @@ oo
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
test|end
Loading…
Cancel
Save