Skip to content

Commit a0028e8

Browse files
author
Sjoerd Langkemper
committed
Give error specific to first argument
In bindec, octdec, hexdec, and base_convert, the string to convert is the first argument, so we can throw a ValueError specific to that argument when it contains invalid characters.
1 parent 516203b commit a0028e8

16 files changed

Lines changed: 184 additions & 184 deletions

ext/standard/math.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -908,7 +908,7 @@ PHPAPI zend_result _php_math_basetozval(zend_string *str, int base, zval *ret)
908908
}
909909

910910
if (invalidchars > 0) {
911-
zend_value_error("Invalid characters passed for attempted conversion");
911+
zend_argument_value_error(1, "has invalid characters for attempted conversion");
912912
return FAILURE;
913913
}
914914

ext/standard/tests/math/base_convert_basic.phpt

Lines changed: 80 additions & 80 deletions
Large diffs are not rendered by default.

ext/standard/tests/math/base_convert_improvements.phpt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@ try {
6262
7
6363
10
6464
=======================================
65-
Invalid characters passed for attempted conversion
66-
Invalid characters passed for attempted conversion
67-
Invalid characters passed for attempted conversion
68-
Invalid characters passed for attempted conversion
69-
Invalid characters passed for attempted conversion
70-
Invalid characters passed for attempted conversion
65+
base_convert(): Argument #1 ($num) has invalid characters for attempted conversion
66+
base_convert(): Argument #1 ($num) has invalid characters for attempted conversion
67+
base_convert(): Argument #1 ($num) has invalid characters for attempted conversion
68+
base_convert(): Argument #1 ($num) has invalid characters for attempted conversion
69+
base_convert(): Argument #1 ($num) has invalid characters for attempted conversion
70+
base_convert(): Argument #1 ($num) has invalid characters for attempted conversion

ext/standard/tests/math/base_convert_variation1.phpt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -76,25 +76,25 @@ string(1) "1"
7676
string(2) "14"
7777

7878
-- Iteration 4 --
79-
ValueError: Invalid characters passed for attempted conversion
79+
ValueError: base_convert(): Argument #1 ($num) has invalid characters for attempted conversion
8080

8181
-- Iteration 5 --
8282
string(11) "17777777777"
8383

8484
-- Iteration 6 --
85-
ValueError: Invalid characters passed for attempted conversion
85+
ValueError: base_convert(): Argument #1 ($num) has invalid characters for attempted conversion
8686

8787
-- Iteration 7 --
88-
ValueError: Invalid characters passed for attempted conversion
88+
ValueError: base_convert(): Argument #1 ($num) has invalid characters for attempted conversion
8989

9090
-- Iteration 8 --
91-
ValueError: Invalid characters passed for attempted conversion
91+
ValueError: base_convert(): Argument #1 ($num) has invalid characters for attempted conversion
9292

9393
-- Iteration 9 --
94-
ValueError: Invalid characters passed for attempted conversion
94+
ValueError: base_convert(): Argument #1 ($num) has invalid characters for attempted conversion
9595

9696
-- Iteration 10 --
97-
ValueError: Invalid characters passed for attempted conversion
97+
ValueError: base_convert(): Argument #1 ($num) has invalid characters for attempted conversion
9898

9999
-- Iteration 11 --
100100
string(1) "1"
@@ -118,13 +118,13 @@ string(1) "0"
118118
TypeError: base_convert(): Argument #1 ($num) must be of type string, array given
119119

120120
-- Iteration 18 --
121-
ValueError: Invalid characters passed for attempted conversion
121+
ValueError: base_convert(): Argument #1 ($num) has invalid characters for attempted conversion
122122

123123
-- Iteration 19 --
124-
ValueError: Invalid characters passed for attempted conversion
124+
ValueError: base_convert(): Argument #1 ($num) has invalid characters for attempted conversion
125125

126126
-- Iteration 20 --
127-
ValueError: Invalid characters passed for attempted conversion
127+
ValueError: base_convert(): Argument #1 ($num) has invalid characters for attempted conversion
128128

129129
-- Iteration 21 --
130130
TypeError: base_convert(): Argument #1 ($num) must be of type string, resource given

ext/standard/tests/math/bindec_basic.phpt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,20 @@ for ($i = 0; $i < count($values); $i++) {
3939
?>
4040
--EXPECT--
4141
int(455)
42-
ValueError: Invalid characters passed for attempted conversion
43-
ValueError: Invalid characters passed for attempted conversion
44-
ValueError: Invalid characters passed for attempted conversion
45-
ValueError: Invalid characters passed for attempted conversion
42+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
43+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
44+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
45+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
4646
int(455)
4747
int(224)
4848
int(2147483647)
4949
float(2147483648)
50-
ValueError: Invalid characters passed for attempted conversion
51-
ValueError: Invalid characters passed for attempted conversion
52-
ValueError: Invalid characters passed for attempted conversion
53-
ValueError: Invalid characters passed for attempted conversion
54-
ValueError: Invalid characters passed for attempted conversion
55-
ValueError: Invalid characters passed for attempted conversion
56-
ValueError: Invalid characters passed for attempted conversion
50+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
51+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
52+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
53+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
54+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
55+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
56+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
5757
int(1)
5858
int(0)

ext/standard/tests/math/bindec_basic_64bit.phpt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,20 @@ for ($i = 0; $i < count($values); $i++) {
3939
?>
4040
--EXPECT--
4141
int(455)
42-
ValueError: Invalid characters passed for attempted conversion
43-
ValueError: Invalid characters passed for attempted conversion
44-
ValueError: Invalid characters passed for attempted conversion
45-
ValueError: Invalid characters passed for attempted conversion
42+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
43+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
44+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
45+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
4646
int(455)
4747
int(224)
4848
int(2147483647)
4949
int(2147483648)
50-
ValueError: Invalid characters passed for attempted conversion
51-
ValueError: Invalid characters passed for attempted conversion
52-
ValueError: Invalid characters passed for attempted conversion
53-
ValueError: Invalid characters passed for attempted conversion
54-
ValueError: Invalid characters passed for attempted conversion
55-
ValueError: Invalid characters passed for attempted conversion
56-
ValueError: Invalid characters passed for attempted conversion
50+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
51+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
52+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
53+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
54+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
55+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
56+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
5757
int(1)
5858
int(0)

ext/standard/tests/math/bindec_variation1.phpt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,25 +76,25 @@ int(0)
7676
int(1)
7777

7878
-- Iteration 3 --
79-
ValueError: Invalid characters passed for attempted conversion
79+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
8080

8181
-- Iteration 4 --
82-
ValueError: Invalid characters passed for attempted conversion
82+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
8383

8484
-- Iteration 5 --
85-
ValueError: Invalid characters passed for attempted conversion
85+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
8686

8787
-- Iteration 6 --
88-
ValueError: Invalid characters passed for attempted conversion
88+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
8989

9090
-- Iteration 7 --
91-
ValueError: Invalid characters passed for attempted conversion
91+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
9292

9393
-- Iteration 8 --
94-
ValueError: Invalid characters passed for attempted conversion
94+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
9595

9696
-- Iteration 9 --
97-
ValueError: Invalid characters passed for attempted conversion
97+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
9898

9999
-- Iteration 10 --
100100
int(1)
@@ -118,13 +118,13 @@ int(0)
118118
TypeError: bindec(): Argument #1 ($binary_string) must be of type string, array given
119119

120120
-- Iteration 17 --
121-
ValueError: Invalid characters passed for attempted conversion
121+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
122122

123123
-- Iteration 18 --
124-
ValueError: Invalid characters passed for attempted conversion
124+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
125125

126126
-- Iteration 19 --
127-
ValueError: Invalid characters passed for attempted conversion
127+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
128128

129129
-- Iteration 20 --
130130
TypeError: bindec(): Argument #1 ($binary_string) must be of type string, resource given

ext/standard/tests/math/bindec_variation1_64bit.phpt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,25 +76,25 @@ int(0)
7676
int(1)
7777

7878
-- Iteration 3 --
79-
ValueError: Invalid characters passed for attempted conversion
79+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
8080

8181
-- Iteration 4 --
82-
ValueError: Invalid characters passed for attempted conversion
82+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
8383

8484
-- Iteration 5 --
85-
ValueError: Invalid characters passed for attempted conversion
85+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
8686

8787
-- Iteration 6 --
88-
ValueError: Invalid characters passed for attempted conversion
88+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
8989

9090
-- Iteration 7 --
91-
ValueError: Invalid characters passed for attempted conversion
91+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
9292

9393
-- Iteration 8 --
94-
ValueError: Invalid characters passed for attempted conversion
94+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
9595

9696
-- Iteration 9 --
97-
ValueError: Invalid characters passed for attempted conversion
97+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
9898

9999
-- Iteration 10 --
100100
int(1)
@@ -118,13 +118,13 @@ int(0)
118118
TypeError: bindec(): Argument #1 ($binary_string) must be of type string, array given
119119

120120
-- Iteration 17 --
121-
ValueError: Invalid characters passed for attempted conversion
121+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
122122

123123
-- Iteration 18 --
124-
ValueError: Invalid characters passed for attempted conversion
124+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
125125

126126
-- Iteration 19 --
127-
ValueError: Invalid characters passed for attempted conversion
127+
ValueError: bindec(): Argument #1 ($binary_string) has invalid characters for attempted conversion
128128

129129
-- Iteration 20 --
130130
TypeError: bindec(): Argument #1 ($binary_string) must be of type string, resource given

ext/standard/tests/math/hexdec.phpt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ var_dump((float)hexdec("17fffffff"));
3333
--EXPECT--
3434
int(74565)
3535
int(74565)
36-
ValueError: Invalid characters passed for attempted conversion
37-
ValueError: Invalid characters passed for attempted conversion
38-
ValueError: Invalid characters passed for attempted conversion
36+
ValueError: hexdec(): Argument #1 ($hex_string) has invalid characters for attempted conversion
37+
ValueError: hexdec(): Argument #1 ($hex_string) has invalid characters for attempted conversion
38+
ValueError: hexdec(): Argument #1 ($hex_string) has invalid characters for attempted conversion
3939
float(78187069441)
4040
float(6442450943)

ext/standard/tests/math/hexdec_basic.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,10 @@ int(1194684)
4242
int(7904751)
4343
int(2147483647)
4444
float(2147483648)
45-
ValueError: Invalid characters passed for attempted conversion
45+
ValueError: hexdec(): Argument #1 ($hex_string) has invalid characters for attempted conversion
4646
int(3215381)
4747
int(3215381)
48-
ValueError: Invalid characters passed for attempted conversion
48+
ValueError: hexdec(): Argument #1 ($hex_string) has invalid characters for attempted conversion
4949
int(51446064)
5050
int(18279)
5151
int(70199)

0 commit comments

Comments
 (0)