Skip to content

Commit 743729d

Browse files
committed
Promote warnings to errors in str_pad()
1 parent 6cd821b commit 743729d

File tree

3 files changed

+72
-2
lines changed

3 files changed

+72
-2
lines changed

ext/standard/string.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5683,12 +5683,12 @@ PHP_FUNCTION(str_pad)
56835683
}
56845684

56855685
if (pad_str_len == 0) {
5686-
php_error_docref(NULL, E_WARNING, "Padding string cannot be empty");
5686+
zend_throw_error(NULL, "Padding string cannot be empty");
56875687
return;
56885688
}
56895689

56905690
if (pad_type_val < STR_PAD_LEFT || pad_type_val > STR_PAD_BOTH) {
5691-
php_error_docref(NULL, E_WARNING, "Padding type has to be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH");
5691+
zend_throw_error(NULL, "Padding type has to be STR_PAD_LEFT, STR_PAD_RIGHT, or STR_PAD_BOTH");
56925692
return;
56935693
}
56945694

-783 Bytes
Binary file not shown.
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
--TEST--
2+
str_pad() function: usage variations - Non printable chars
3+
--INI--
4+
precision=14
5+
--FILE--
6+
<?php
7+
// Split from str_pad for NUL Bytes
8+
// 7-bit ASCII
9+
$string = chr(0).chr(255).chr(128).chr(234).chr(143);
10+
11+
/* different pad_lengths */
12+
$pad_lengths = [
13+
-PHP_INT_MAX, // huge negative value
14+
-1, // negative value
15+
0, // pad_length < sizeof(input_string)
16+
9, // pad_length <= sizeof(input_string)
17+
10, // pad_length > sizeof(input_string)
18+
16, // pad_length > sizeof(input_string)
19+
];
20+
21+
$pad_string = "=";
22+
23+
/*loop through to use each variant of $pad_length on
24+
each element of $input_strings array */
25+
foreach ($pad_lengths as $pad_length ) {
26+
// default pad_string & pad_type
27+
var_dump( bin2hex( str_pad($string, $pad_length) ) );
28+
// default pad_type
29+
var_dump( bin2hex( str_pad($string, $pad_length, $pad_string) ) );
30+
var_dump( bin2hex( str_pad($string, $pad_length, $pad_string, STR_PAD_LEFT) ) );
31+
var_dump( bin2hex( str_pad($string, $pad_length, $pad_string, STR_PAD_RIGHT) ) );
32+
var_dump( bin2hex( str_pad($string, $pad_length, $pad_string, STR_PAD_BOTH) ) );
33+
}
34+
35+
?>
36+
37+
DONE
38+
--EXPECT--
39+
string(10) "00ff80ea8f"
40+
string(10) "00ff80ea8f"
41+
string(10) "00ff80ea8f"
42+
string(10) "00ff80ea8f"
43+
string(10) "00ff80ea8f"
44+
string(10) "00ff80ea8f"
45+
string(10) "00ff80ea8f"
46+
string(10) "00ff80ea8f"
47+
string(10) "00ff80ea8f"
48+
string(10) "00ff80ea8f"
49+
string(10) "00ff80ea8f"
50+
string(10) "00ff80ea8f"
51+
string(10) "00ff80ea8f"
52+
string(10) "00ff80ea8f"
53+
string(10) "00ff80ea8f"
54+
string(18) "00ff80ea8f20202020"
55+
string(18) "00ff80ea8f3d3d3d3d"
56+
string(18) "3d3d3d3d00ff80ea8f"
57+
string(18) "00ff80ea8f3d3d3d3d"
58+
string(18) "3d3d00ff80ea8f3d3d"
59+
string(20) "00ff80ea8f2020202020"
60+
string(20) "00ff80ea8f3d3d3d3d3d"
61+
string(20) "3d3d3d3d3d00ff80ea8f"
62+
string(20) "00ff80ea8f3d3d3d3d3d"
63+
string(20) "3d3d00ff80ea8f3d3d3d"
64+
string(32) "00ff80ea8f2020202020202020202020"
65+
string(32) "00ff80ea8f3d3d3d3d3d3d3d3d3d3d3d"
66+
string(32) "3d3d3d3d3d3d3d3d3d3d3d00ff80ea8f"
67+
string(32) "00ff80ea8f3d3d3d3d3d3d3d3d3d3d3d"
68+
string(32) "3d3d3d3d3d00ff80ea8f3d3d3d3d3d3d"
69+
70+
DONE

0 commit comments

Comments
 (0)