Skip to content

Commit 99ea19c

Browse files
committed
Fix issue with empty string check and fix tests
1 parent 2984667 commit 99ea19c

9 files changed

+34
-30
lines changed

ext/reflection/php_reflection.c

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2152,20 +2152,22 @@ ZEND_METHOD(ReflectionFunctionAbstract, hasParameter)
21522152
RETURN_FALSE;
21532153
}
21542154

2155-
if (ZSTR_LEN(arg_name) != 0) {
2156-
zend_argument_value_error(1, "must not be an empty string");
2157-
RETURN_THROWS();
2158-
}
2159-
21602155
if (arg_name != NULL) {
2156+
if (ZSTR_LEN(arg_name) == 0) {
2157+
zend_argument_value_error(1, "must not be an empty string");
2158+
RETURN_THROWS();
2159+
}
2160+
21612161
if (get_parameter_position(fptr, arg_name, num_args) > -1) {
21622162
RETURN_TRUE;
21632163
}
21642164

21652165
RETURN_FALSE;
21662166
} else {
2167+
position -= 1;
2168+
21672169
if (position < 0) {
2168-
zend_argument_value_error(1, "must be greater than or equal to 0");
2170+
zend_argument_value_error(1, "must be greater than or equal to 1");
21692171
RETURN_THROWS();
21702172
}
21712173

@@ -2202,21 +2204,23 @@ ZEND_METHOD(ReflectionFunctionAbstract, getParameter)
22022204
RETURN_THROWS();
22032205
}
22042206

2205-
if (ZSTR_LEN(arg_name) != 0) {
2206-
zend_argument_value_error(1, "must not be an empty string");
2207-
RETURN_THROWS();
2208-
}
2209-
22102207
if (arg_name != NULL) {
2208+
if (ZSTR_LEN(arg_name) == 0) {
2209+
zend_argument_value_error(1, "must not be an empty string");
2210+
RETURN_THROWS();
2211+
}
2212+
22112213
position = get_parameter_position(fptr, arg_name, num_args);
22122214

22132215
if (position == -1) {
22142216
_DO_THROW("The parameter specified by its name could not be found");
22152217
RETURN_THROWS();
22162218
}
22172219
} else {
2220+
position -= 1;
2221+
22182222
if (position < 0) {
2219-
zend_argument_value_error(1, "must be greater than or equal to 0");
2223+
zend_argument_value_error(1, "must be greater than or equal to 1");
22202224
RETURN_THROWS();
22212225
}
22222226
if (position >= num_args) {

ext/reflection/tests/ReflectionFunction_getParameter_basic.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ function foo(string $bar) {}
77
$function = new ReflectionFunction('sort');
88
var_dump($function->getParameter('array'));
99
var_dump($function->getParameter('flags'));
10-
var_dump($function->getParameter(0));
1110
var_dump($function->getParameter(1));
11+
var_dump($function->getParameter(2));
1212

1313
$function = new ReflectionFunction('foo');
1414
var_dump($function->getParameter('bar'));
15-
var_dump($function->getParameter(0));
15+
var_dump($function->getParameter(1));
1616
?>
1717
--EXPECT--
1818
object(ReflectionParameter)#2 (1) {

ext/reflection/tests/ReflectionFunction_getParameter_error.phpt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,16 @@ try {
3838
}
3939

4040
try {
41-
var_dump($function->getParameter(1));
41+
var_dump($function->getParameter(2));
4242
} catch(ReflectionException $e) {
4343
print($e->getMessage() . PHP_EOL);
4444
}
4545

4646
?>
4747
--EXPECT--
4848
The parameter specified by its name could not be found
49-
ReflectionFunctionAbstract::getParameter(): Argument #1 ($parameter) must be greater than or equal to 0
49+
ReflectionFunctionAbstract::getParameter(): Argument #1 ($parameter) must be greater than or equal to 1
5050
The parameter specified by its offset could not be found
5151
The parameter specified by its name could not be found
52-
ReflectionFunctionAbstract::getParameter(): Argument #1 ($parameter) must be greater than or equal to 0
52+
ReflectionFunctionAbstract::getParameter(): Argument #1 ($parameter) must be greater than or equal to 1
5353
The parameter specified by its offset could not be found

ext/reflection/tests/ReflectionFunction_hasParameter_basic.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ $function = new ReflectionFunction('sort');
88
var_dump($function->hasParameter('array'));
99
var_dump($function->hasParameter('Array'));
1010
var_dump($function->hasParameter('string'));
11-
var_dump($function->hasParameter(0));
1211
var_dump($function->hasParameter(1));
12+
var_dump($function->hasParameter(2));
1313

1414
$function = new ReflectionFunction('foo');
1515
var_dump($function->hasParameter('bar'));
1616
var_dump($function->hasParameter('Bar'));
1717
var_dump($function->hasParameter('string'));
18-
var_dump($function->hasParameter(0));
1918
var_dump($function->hasParameter(1));
19+
var_dump($function->hasParameter(2));
2020
?>
2121
--EXPECT--
2222
bool(true)

ext/reflection/tests/ReflectionFunction_hasParameter_error.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,5 @@ try {
2121
}
2222
?>
2323
--EXPECT--
24-
ReflectionFunctionAbstract::hasParameter(): Argument #1 ($parameter) must be greater than or equal to 0
25-
ReflectionFunctionAbstract::hasParameter(): Argument #1 ($parameter) must be greater than or equal to 0
24+
ReflectionFunctionAbstract::hasParameter(): Argument #1 ($parameter) must be greater than or equal to 1
25+
ReflectionFunctionAbstract::hasParameter(): Argument #1 ($parameter) must be greater than or equal to 1

ext/reflection/tests/ReflectionMethod_getParameter_basic.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ class C {
88

99
$method = new ReflectionMethod('WeakReference', 'create');
1010
var_dump($method->getParameter('object'));
11-
var_dump($method->getParameter(0));
11+
var_dump($method->getParameter(1));
1212

1313
$method = new ReflectionMethod('C', 'foo');
1414
var_dump($method->getParameter('bar'));
15-
var_dump($method->getParameter(0));
15+
var_dump($method->getParameter(1));
1616
?>
1717
--EXPECT--
1818
object(ReflectionParameter)#2 (1) {

ext/reflection/tests/ReflectionMethod_getParameter_error.phpt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,15 @@ try {
4141
}
4242

4343
try {
44-
var_dump($method->getParameter(1));
44+
var_dump($method->getParameter(2));
4545
} catch (ReflectionException $e) {
4646
print($e->getMessage() . PHP_EOL);
4747
}
4848
?>
4949
--EXPECT--
5050
The parameter specified by its name could not be found
51-
ReflectionFunctionAbstract::getParameter(): Argument #1 ($parameter) must be greater than or equal to 0
51+
ReflectionFunctionAbstract::getParameter(): Argument #1 ($parameter) must be greater than or equal to 1
5252
The parameter specified by its offset could not be found
5353
The parameter specified by its name could not be found
54-
ReflectionFunctionAbstract::getParameter(): Argument #1 ($parameter) must be greater than or equal to 0
54+
ReflectionFunctionAbstract::getParameter(): Argument #1 ($parameter) must be greater than or equal to 1
5555
The parameter specified by its offset could not be found

ext/reflection/tests/ReflectionMethod_hasParameter_basic.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ $method = new ReflectionMethod('WeakReference', 'create');
1010
var_dump($method->hasParameter('object'));
1111
var_dump($method->hasParameter('Object'));
1212
var_dump($method->hasParameter('string'));
13-
var_dump($method->hasParameter(0));
1413
var_dump($method->hasParameter(1));
14+
var_dump($method->hasParameter(2));
1515

1616
$method = new ReflectionMethod('C', 'foo');
1717
var_dump($method->hasParameter('bar'));
1818
var_dump($method->hasParameter('Bar'));
1919
var_dump($method->hasParameter('string'));
20-
var_dump($method->hasParameter(0));
2120
var_dump($method->hasParameter(1));
21+
var_dump($method->hasParameter(2));
2222
?>
2323
--EXPECT--
2424
bool(true)

ext/reflection/tests/ReflectionMethod_hasParameter_error.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,5 @@ try {
2323
}
2424
?>
2525
--EXPECT--
26-
ReflectionFunctionAbstract::hasParameter(): Argument #1 ($parameter) must be greater than or equal to 0
27-
ReflectionFunctionAbstract::hasParameter(): Argument #1 ($parameter) must be greater than or equal to 0
26+
ReflectionFunctionAbstract::hasParameter(): Argument #1 ($parameter) must be greater than or equal to 1
27+
ReflectionFunctionAbstract::hasParameter(): Argument #1 ($parameter) must be greater than or equal to 1

0 commit comments

Comments
 (0)